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


Popular Content

Showing content with the highest reputation since 05/18/2013 in all areas

  1. 51 points
    Let's make a tutorial on how to not get banned. Age of Account Holder Jagex has stated in their youtube videos/live streams that they look at the age of the account holder to determine how many hours a human of said age would likely to be playing the game. A person below 18 years old is likely to be in school between 8am and 3am. A person between 18 and 22 might be in university/college for many hours each day. On top of school hours, students have to spend their hours doing homework. Jagex knows this fact, and looks at the age of account holders and how often the account is played on. Botting many over weekdays may sway Jagex to think you are a botter if you give them a young age.If the age of the account holder (given to Jagex at account registration) is an age which a person is likely to be in school, do not bot during school hours, and limit the amount of hours botted during weekdays. I'd recommend giving Jagex an age of between 24 and 40 to lessen the chance of Jagex suspecting you of botting.Character Clothes Don't use the default character clothes upon creating your account. Make sure to switch the clothes up. Other players are more likely to report you for being a bot because you look like a common bot.Level 3s Please level up your combat level to at least 10. Level 3 accounts are usually bots. Players are likely to suspect you are botting if your account is level 3, and they will report you.Avoid Botting Long Hours As stated by Jagex, most legitimate players don't play for long hours. Don't bot more than 8-10 hours a day, unless you don't care about your account.Use Breaks Most humans don't have the attention span to play hours without a break. Use TRiBot's break handler, giving your account a break every once in a while.Switch Up Activities Don't bot the same skill/activity every day. Switch up the scripts you use. Try using a woodcutting script for a few hours one day, then switch to a mining script for the remaining hours of the day. The next day, maybe try using a mining script again, then go and use a combat script. Most real players don't do the same skill/activity for days on end. Switch it up.Avoid Changes in Playing Patterns If your account is used solely for botting, and not for playing, then don't play on your account. You personally will have a different playing pattern than TRiBot. Jagex might look at this difference in playing patterns, and could bring upon suspicion that your account is a bot.Try using scripts from the same author. Individual script writers usually have specific ways of handling actions. Scripts by different authors might display different playing patterns.Make sure the same mouse speed is being used in all of the scripts you use.Avoid Scripts with Bugs Scripts with bugs in them can cause your account to be trapped in an endless loop of doing something which looks bot-like. Example: If the account gets stuck outside of the Lumbridge chicken coop and it tries to attack chickens which are in the coop for hours, it will look like a bot. It will keep trying to kill the chickens even though it can't reach it. A human would be smart enough to know to open the coop door to fight the chickens.If the script you are running wasn't developed by an established script writer, then baby-sit your bot to ensure that the script doesn't have any bugs in it. If it does have bugs, you can either use a different script, or baby-sit the bot at all times when running the script.Use Scripts with a High ABCL TRiBot generates unique characteristics for every different botter. These characteristics will hold data such as if the botter should hover the next object/npc, if the botter should go to the next anticipated object/npc location if waiting for an object/npc to spawn, wait times for switching objects/npcs, how often to check XP, and more! By assigning unique characteristics for every different botter, TRiBot will be able to make your character seem different from all of the other botters, thus making it more human-like.If the script has a high ABCL (such as 8-10), then the script implements most, if not all of the unique characteristics available to the bot. Without these More info about ABC/ABCL here:https://tribot.org/forums/topic/31289-anti-ban-compliance/https://tribot.org/forums/topic/31289-anti-ban-compliance/?p=385153https://tribot.org/forums/topic/31969-guide-to-implementing-anti-ban-compliance/Avoid Botting in Areas Filled With Other Bots Try to bot where no other bots are. For one, Jagex calculates playing pattern heuristics. They will compare the heuristics of each player to the other players in the area. If a group of players in the same area all have the same heuristics, Jagex will conclude they are all bots and ban them all. Note: This is what ABC/ABCL was made to combat. ABC/ABCL assigns unique characteristics to every different bot, thus giving them different playing pattern heuristics, which combats Jagex's bot finding methods.Another reason why you should avoid botting in areas filled with other bots is that players are likely to notice a ton of bots, get angered, and report them all. A Note about Bans Delayed Bans Jagex uses delayed bans as a method to prevent script/bot makers from discovering just what is causing their bot to get banned. These delays in bans can be anywhere from a one day delay, to a six month delay.That being said, do not blame the last script or bot you used. Your ban was likely to be caused by a script/bot you used a while ago.Ban Upon Login Sometimes instead of banning an account straight away for botting, Jagex will issue a ban which won't activate until you login to the client. With that being said, don't blame the bot client and say it is detectable. Your ban has been waiting for you, and it just wasn't issued to you until you logged in.IP Flagging If your account gets banned for botting, Jagex will likely flag your IP, and will monitor the accounts which are linked to that IP. If you get banned, try to reset your IP and create a new account on that new IP.Some proxy/corporate IPs are also flagged, so watch out.Avoiding IP Flagging Some users like to avoid IP flagging by using proxies, but many of them still link their account to their main IP.If you are using a proxy to avoid IP flagging, you must create the account while using the proxy. If you create the account with your main IP, but only bot using a proxy, your main IP is still under threat. If you create 10 accounts using your main IP, but bot on them using 10 different proxies, a ban one one account could lead to a ban on the 9 other accounts because they are all linked by the account creation IP.If you are using a proxy, you should also never login to the RuneScape website (or client) using your main IP. If you do, your account will be associated with your main IP.Accounts Which You Don't Even Bot on are Under the Flame As stated by Jagex, if you are caught botting on one account, all of your other accounts may be banned for botting. It doesn't matter whether your other accounts were actually botted on. Be careful.A Note about "Client Detection" Some users claim TRiBot is detectable. However, they are wrong. Users have to keep in mind that I can read the client's code, and I do. With every RuneScape update, I check the client's code for any method which can be used to detect botting clients. So far, no code is being used to detect/search for TRiBot.
  2. 48 points
    ExMerch v1 by Erickho123 The script is free forever. Feel free to donate or overbuy my gold to feed duh famry. Anti lure if walked too far away, it'll walk back to your starting position Anti scam if trade values are different, then it will decline Multiple Item buying Buy multple items at once, even in the same trade window or one by one. Seperate your item ids with a comma Example:Item id: 432,546,443,561 Seperate your item prices corersponding with the item id with a comma. Example: 1000,3000,495,270 Low CPU Doesn't use much cpu, it's a merchant script. Anti scam Fast at recognizing trades, trading, and inputting values along with the fastest typing method. Automatic name grabbing Tired of those merchers that asks you type in the item name? Well this purely uses IDS and still has anti scam Saving / Loading settings loads / save specific profiles so easier to use Download Click here to view it in the repo. (cloudnine) The script is free forever, Get into lite mode.
  3. 45 points
    Hello community, I have started working on a new project aimed at making TRiBot's mouse movements as human-like as possible. To do this, I plan to implement real mouse movement data, replacing TRiBot's pseudo mouse movements. Real mouse movement data will be generated by users, clicking strategically placed circles, all with different sizes. The data recorded will be movement locations and timings. After enough data is collected, I will work on analyzing the data and implementing it in the client. That's right, TRiBot's mouse will use real, human mouse movements. We will be able to further throw off Jagex's detection systems, especially because Fitt's Law will be used along with the human mouse movements. We are currently in the data collection stage, where I need the community's help. The details for providing help are listed below. What will you be doing? You will need to run a certain script. The objective will be to click ~628 red circles, which will take approx. eight minutes. After finishing, a file will be generated. You must upload the file in an attachment in a post in this thread.When should this be done? The sooner the better.Will you receive compensation? After you submit the required amount of files, you'll be given access to bot using the Human-Based Mouse (with your collected data). This will make all of your bots seem more human-like.How many data files are needed per user? I need between 20 and 22 data files per user. The higher, the more human-like the mouse will be. Instructions: Open TRiBot's Mouse Data Collector tool via "File > Mouse Data Collector" Read/do: You will be clicking the solid red circles, one after another. Your goal is to click each circle quickly, and to only click once per circle (try not to misclick). Your clicks need to be as accurate as possible. If you can, set your mouse's reporting rate to the maximum. Set the client delay to the lowest. Do all of the clicks on one sitting. Do not do anything else other than clicking those circles for all of the ~628 circles. This will take approx. eight minutes. Post all of the data files under a single TRiBot account. If you use multiple TRiBot accounts to post the data, your data will be ignored. Do not post the same data files twice. I can tell if you do so. After clicking all of the circles, a file will be created, and the location will be stated in the debug box. Upload that file to a post in this thread.The system to integrate human mouse movements is complete. All we need now is mouse data. Thank-you, TRiLeZ
  4. 41 points
    Start a livechat to order! https://YoHoGold.com Why choose YoHoJo? •#1 In Trader Feedback score at TRiBot •Thousands of successful trades, Billions of GP handled. •Over 10+ years of black market experience •Professional, smooth trades, without any hiccups! Buy TRiBot Credits with Runescape Gold, PayPal, or Bitcoin Use Credits to Buy VIP & Scripts Credits: 1.6M Each VIP - 6.5 Credits VIP-Extended - 8 Credits Start a livechat to order!
  5. 33 points
    Info Hey guys! Decided to post a thread for a project i have been working on for the past few weeks, i call it AdvancedWalking. It's a new approach to something that has been bugging me ever since i started using Tribot. It has some pros and cons which i will try to explain below! What do you mean with 'next-gen'? AdvancedWalking its purpose is to replace WebWalking. Then what is 'WebWalking' and how does it work? Well glad you asked! Currently Tribot and all other major OSRS bots use a similar walking method to walk common (long) distances. The method they use is called WebWalking. What that basically means is they draw a 'web' of points and lines all over the runescape worldmap. And when a script wants to walk from say Lumbridge to Falador, a route is calculated using the least amount of points and lines to get to the destination. This is a good system so that scripts can simply say 'walk to falador!' from anywhere and by traversing the web they will get there. Whats wrong with WebWalking if it already does the job? While WebWalking is a great system, it does have its flaws. First, if a destination is 'off the web', the result is unstable. It might run as far as it can and then stop, or it might just run circles around the destination (i'm looking at you Draynor Manor) or have other unexpected behavior, this is increasingly annoying when navigating in houses/cities where precision walking is needed. Next there is also efficiency, It will always walk over the 'web', meaning that it might take a significant detour in some cases instead of just running from A to B. This also brings another problem, because all the bots run over the same web, it is not very good for staying undetectable to jagex. If thousands of bots run over the same set of dots and lines, it's bound to stand out right? (This is detectable by Jagex using LCP detection, I've written more about that here). So why is AdvancedWalking different? Instead of using a 'web' of dots and lines, i created a system that uses a large number of polygons that together form a 'mesh'. This allows for much more precise movement, but more specifically, it will allow players to take the absolute shortest path from A to B, even over very long distances! And since every player will take their optimal (human-like) route, it is much more anti-ban friendly! Then i also want to give the power back to the scripters, WebWalking currently has no support to 'get' the generated path and use your own walking methods, or just 'get' the location of the nearest bank instead of only walking there. And it doesn't stop there, i am adding support for (all) agility shortcuts and teleports to really optimize the path! Alright, cool. But what are the cons? As i mentioned there are some cons to AdvancedWalking that WebWalking doesn't have. First, since AdvancedWalking isn't included in the client, the navmesh data has to be downloaded and kept up to date. This is done automatically, but there will be a download going on if the mesh has updated. Also (because it isn't included in the client) the navmesh object has to be 'build' whenever a script has started. Now during testing this is instant. But i imagine when the mesh has become exponentially bigger the load time might take a few seconds, i will do everything i can to minimize this though. And finally, the 'biggest' con is that generating a path through hundreds of squares is slightly more CPU intensive then generating it over lines and dots. But results so far have proven this difference insignificant. Features Replacement/Alternative to WebWalking. Precision/shortest route walking. Door/gate/stairs support. Teleport support. Agility Shortcut support. Scripter friendly. Can be used as a pathfinder only. Optional: fallback to WebWalking if it somehow fails. Currently working on: MapJump support (going up/down stairs, teleports, shortcuts etc). Walking algorithm Technical limitations: Currently the mesh is generated by running around ingame with a script running. This could be automated by reading the RS cache and decrypting the mapdata using the XTEA keys that the server send to the client. I hope @TRiLeZ might give me a hand here. Source code: The main AdvancedWalking repository that scripts can use (when it's done). This contains absolutely no code regarding the creation of the navmesh, since that data will be downloaded and kept up-to-date instead. https://github.com/Laniax/AdvancedWalking Then we have the Generator. This project takes runescape tile/map data as input, and poops navmesh data as output. This is the data that the main repository will download. As a scripter you do not need this inside your script. https://github.com/Laniax/AdvancedWalking-Generator Then we have the Collector. This is a script that can run inside the game to collect tile/map data (WIP). In other words, this project will collect the input data for the Generator. As a scripter you do not need this inside your script. https://github.com/Laniax/AdvancedWalking-Collector I have created a 'mesh viewer' which you can view here. I'm also keeping an album of screenshots i take during development, for those interested they can check it out here. I have some javadocs available here for anyone curious. and i also made a quick comparison video with webwalking. If there is enough interest i will create a small infographic to explain everything. And hopefully show some code on github soon! Cheers!
  6. 29 points
    RUN WITH CLIENT IN LITE MODE (FILE -> SETTINGS -> LITE MODE)! Masks become available at 01:00, 17/06, BST. To convert this to your time, use this: http://www.timeanddate.com/worldclock/converter.html What it does: Logs in, checks if a scythe OR a PUMPKIN is near by.If not, switches world.Will stop once scythe (not for pumpkins, will carry on) appears in inventory.WILL SAY LOCATION OF RARE IN CLIENT TRAY IF NOT ON SCREEN.Will teleport using VARROCK or HOUSE tabs if below HP set in the GUI. FAQ: Received: Masks: Pumpkins: Scythes: DOWNLOAD: BELOW - USE 1.70 FOR SANTA HATS!Rare Hunter v1.10.zip Rare Hunter v1.20.zip Rare Hunter v1.30.zip Rare Hunter v1.40.zip Rare Hunter v1.50.zip Rare Hunter v1.51.zip Rare Hunter v1.52.zip Rare Hunter v1.55.zip Rare Hunter v1.60.zip Rare Hunter v1.61.zip Rare Hunter v1.65.zip Rare Hunter v1.70.zip
  7. 20 points
    TRiLeZ's Scripting Tutorial The purpose of this tutorial is to teach the basics of coding for TRiBot. This tutorial assumes you have basic/some knowledge of Java. If you don't, try learning a little bit of Java before reading this tutorial. Even though this tutorial is mostly just covering the basics, intermediate scripters may find this tutorial useful. So please intermediates, read this. Sections 5, 6, and 7 are most valuable to intermediates, but the other sections might help too. 1. Requirements Java JDK Eclipse (Standard) 2. Setting Up Eclipse Find a tutorial elsewhere to do this, if Eclipse isn't set up. 3. Resources API Documentation Java 7 Documentation 4. Writing the Script: Getting Started Time to jump into the script. Before reading below, you need to understand the following: If I use an API method which you aren't familiar with, look for it in the API documentation, and read all of the comments about the method. The documentation is your friend. Create a new class name. Make the class extend Script (you'll have to import org.tribot.script.Script). Now, implement the abstract methods of Script into your script class. See the API for which methods to implement. package scripts; import org.tribot.script.Script; public class TutorialScript extends Script { @Override public void run() { } } When the script is executed, the run() method will be called. When the thread exits the run() method, the script will stop. Therefore, we will need to have a loop to make sure we don't leave the run method until we want the script to stop. package scripts; import org.tribot.script.Script; public class TutorialScript extends Script { @Override public void run() { while (true) { sleep(10); } } } You'll notice that I added "sleep(10);" What this does is it makes the script sleep for 10 milliseconds. The reason for doing this is to prevent the script from using max CPU. Without the sleep, the script will try to execute the contents of the loop as many times as possible, and as fast as possible, which is very CPU intensive. Having a sleep will prevent this. Now, we should try to figure out how to structure the main loop of the script. The structure depends on what activity the script will be performing. For this script, we are going to make a basic Draynor willow cutter and banker. Note: I won't be testing this script, nor will I be using 100% correct tiles, IDs, or names. I will make the structure first check the area in which the player is in. Then, the script will check other conditions to determine what to do. The following script is how I decided to structure this script. All of the new methods written are stubs and we will fill them in soon. package scripts; import org.tribot.api2007.Inventory; import org.tribot.script.Script; public class TutorialScript extends Script { /** * Checks if we are at the trees. * * @return True if we are at the trees; false otherwise. */ private boolean isAtTrees() { return false; } /** * Checks if we are in the bank. * * @return True if we are in the bank; false otherwise. */ private boolean isInBank() { return false; } /** * Attempts to cut a tree. If we are already cutting a tree, we will wait * until that tree has been cut. * * @return True if we were able to cut the tree; false otherwise. */ private boolean cut() { return false; } /** * Checks if we are cutting a tree. * * @return True if were are cutting a tree; false otherwise. */ private boolean isCutting() { return false; } /** * Attempts to walk to the bank. * * @return True if we were able to walk to the bank; false otherwise. */ private boolean walkToBank() { return false; } /** * Attempts to walk to the trees. * * @return True if we were able to walk to the trees; false otherwise. */ private boolean walkToTrees() { return false; } /** * Attempts to bank our items. * * @return True if we were successfully able to bank the items; * false otherwise. */ private boolean bank() { return false; } @Override public void run() { while (true) { sleep(50); if (isAtTrees()) { // We are at the trees // Time to check what to do. If the inventory is full, we should // walk to the bank. Otherwise, we should cut the willows. if (Inventory.isFull()) { // The inventory is full walkToBank(); // Let's walk to the bank } else // The inventory is not full cut(); // Let's cut the willows. } else if (isInBank()) { // We are at the bank // Time to check what to do. If the inventory is full, we should // bank the items. Otherwise, we should walk back to the trees. if (Inventory.isFull()) // The inventory is full bank(); // Let's bank the items else // The inventory is not full walkToTrees(); // Let's walk to the trees. } else { // We are neither in the bank, nor at the willows // Time to check what to do. If the inventory is full, we will // walk to the bank. Otherwise, we will walk to the willows. if (Inventory.isFull()) // Inventory is full walkToBank(); // Walk to the bank else // Inventory is not full walkToTrees(); // Walk to the trees. } } } } Assuming you know how the flow of execution is, the comments should be fairly easy to follow, and should explain everything. Now, let's fill in isAtTrees(). How should we do this? Let's find the nearest willow tree, and see if it is on-screen. private boolean isAtTrees() { // We search for the trees by their name - Willow. The means that we // will search for the trees within a radius of 20 tiles from our // character. If they are more than 20 tiles away, the findNearest // method will not find them. Although, if they are more than 20 tiles // away, we can be sure that they aren't on the screen. // We will now store the variable returned form findNearest in the // variable called 'willows'. We declare this variable final because we // will not be changing it's contents after the variable is set. // According to the API, the returned value from findNearest will be // RSObject[]. If there are no trees found, the array will not contain // any elements. The returned value cannot be null, and therefore we // don't have to null check it. // Next, we check the length of the array. If the length is less than 1, // we know that no trees were found. We can now return false. final RSObject[] willows = Objects.findNearest(20, "Willow"); if (willows.length < 1) return false; // The array contains at least one element. The first element in the // array will be the nearest tree to our character. Let's check if this // tree is on screen. We will return the value. return willows[0].isOnScreen(); } Now, we will fill in the isAtBank() method. We will check if either a bank booth, or banker is on-screen. I will explain things in less detail this time since the details above apply to some of the code below. private boolean isInBank() { // Let's first search for on-screen booths. final RSObject[] booths = Objects.findNearest(20, "Bank booth"); if (booths.length > 1) { // A booth is in the array. Let's check if the first element of the // array is on the screen. if (booths[0].isOnScreen()) return true; // The booth is on the screen. We don't need to // check for visible bankers since we already know // that we are in the bank. Let's exit this method // and return true. } // Nope, the nearest booth is no visible. Let's go and and search // for bankers. final RSNPC[] bankers = NPCs.findNearest("Banker"); if (bankers.length < 1) return false; // No booths are on the screen, and no bankers exist. // Let's just exit already since we know that we are // not in the bank. We will return false. // Okay, so we found a banker. The first element in the array is the // nearest NPC. Let's check if that NPC is on-screen. return bankers[0].isOnScreen(); // Return whether or not the banker is on // the screen. If it is, we are in the // bank; if not, then we are not in the // bank. } Now, let's fill in cut(). We will first check if we are already cutting. If we are, then we will wait until we are not cutting anymore. If we are not cutting, we will attempt to cut the tree. private boolean cut() { if (isCutting()) { final long timeout = System.currentTimeMillis() + General.random(60000, 90000); // Let's define a timeout for the loop below. If we don't have a // timeout, it is possible that the script will enter an infinite // loop, and will therefore be stuck. We set the timeout for the // current time plus somewhere between 60 and 90 seconds. We use // randomness to avoid seeming bot-like. while (isCutting() && System.currentTimeMillis() < timeout) { sleep(100, 150); // We will loop while we are cutting, and while the current time // is before the timeout. Make sure to have a sleep to prevent a CPU overload. // We could also implement some anti-ban features here if we // want. // Now, let's check if the willow tree is still at the location // of the last clicked location. To do this, we will define a // global variable - last_tree_tile - of type RSTile. The // variable will be defined below, when we find and click a // tree. // Make sure to null check the variable, since it can be null. // If it is null and we try to perform actions upon it, a Null // Pointer Exception will be thrown, crashing the script. if (this.last_tree_tile != null) { // The variable is not null. We can use it now. if (!Objects.isAt(this.last_tree_tile, "Willow")) { // The willow tree is gone. It has either been chopped // down, or turned into an ent. Let's break out of this // loop. break; // Good-bye loop } } } } // Let's go find a tree to chop. final RSObject[] trees = Objects.findNearest(50, "Willow"); // Search for the willow within 50 tiles // from our character. if (trees.length < 1) return false; // No trees have been found. We can't do anything, so // let's exit this method. if (!trees[0].isOnScreen()) { // The nearest tree is not on the screen. Let's walk to it. if (!Walking.walkPath(Walking.generateStraightPath(trees[0]))) // We could not walk to the tree. Let's exit so we don't try // clicking a tree which isn't on screen. return false; if (!Timing.waitCondition(new Condition() { // We will now use the Timing API to wait until the tree is on // the screen (we are probably walking to the tree right now). @Override public boolean active() { General.sleep(100); // Sleep to reduce CPU usage. return trees[0].isOnScreen(); } }, General.random(8000, 9300))) // A tree could not be found before the timeout of 8-9.3 // seconds. Let's exit the method and return false. we don't // want to end up trying to click a tree which isn't on the // screen. return false; } // Okay, now we are sure trees[0] is on-screen. Let's click it. We may // be still moving at this moment, so let's use DynamicClicking. // DynamicClicking should be used when your character is moving, or the // target is moving, and you need to click the target. if (!DynamicClicking.clickRSObject(trees[0], "Chop down")) // We could not click the tree. Let's exit the method since we // failed. return false; // We clicked the tree. Let's first wait to stop chopping for 1-1.2 // seconds just in case we moved on to this tree while still performing // the chopping animation. Timing.waitCondition(new Condition() { @Override public boolean active() { return !isCutting(); } }, General.random(1000, 1200)); // We don't need to if check it since the result doesn't matter. if (Timing.waitCondition(new Condition() { // Now let's wait until we are cutting. @Override public boolean active() { return isCutting(); } }, General.random(8000, 9000))) { // We are cutting! Now let's record the tree's tile and return true. this.last_tree_tile = trees[0].getPosition().clone(); // getPosition() can never be null, so we don't need to null check // it. return true; } // We failed to cut a tree. Return false. return false; } Now, let's fill out isCutting(). We will simply check the animation. private boolean isCutting() { return Player.getAnimation() > 0; // If the animation ID is greater than // 0, then we are animating. Let's // assume that if were are // animating, that the animation is // the chopping one. } Now let's fill out walkToBank(). Since we are lazy, we will just use web walking. private boolean walkToBank() { if (!WebWalking.walkToBank()) { // We failed to walk to the bank. Let's return false. return false; } // Walking succeeded, but we may still be moving, and not our destination // yet. Let's wait until we are in the bank. return Timing.waitCondition(new Condition() { // If we reach the bank before the timeout, this method will return // true. Otherwise, it will return false. @Override public boolean active() { General.sleep(200, 300); // Reduces CPU usage. return isInBank(); } }, General.random(8000, 9000)); } Now, let's fill out the walkToTrees() method. Once again, we will use web walking. We will search for the nearest willow tree to determine which tile to walk to. private boolean walkToTrees() { final RSObject[] willows = Objects.findNearest(50, "Willow"); if (willows.length < 1) // No willows could be found. We cannot do anything. Let's exit this // method. return false; // Let's walk to the closest willow tree now. if (!WebWalking.walkTo(willows[0])) // We failed to walk to the bank. Let's return false. return false; // Walking failed, but we may still be moving, and not our destination // yet. Let's wait until we are at the trees. return Timing.waitCondition(new Condition() { // If we reach the trees before the timeout, this method will return // true. Otherwise, it will return false. @Override public boolean active() { General.sleep(200, 300); // Reduces CPU usage. return isAtTrees(); } }, General.random(8000, 9000)); } Last method for our basic script; bank(). First, we will check if the bank screen is open. If it is not open, we will open it. Once opened, we will bank our logs. private boolean bank() { if (!Banking.isBankScreenOpen()) { // The bank screen is not open. Let's open it. if (!Banking.openBank()) // Could not open the bank. Let's return false. return false; // Since openBank() will wait for the bank screen to be open before // returning true, it is safe to assume that the bank screen is now // open. } // Now let's deposit the logs. We will check if an axe is in our // inventory. If there is one, we will bank by using our inventory // items. Otherwise, we will just click the deposit all button. // Let's define our axe names now. It is better to define variables like // this globally, but we only use the axe names within this method, so I // don't feel the need to. final String[] axe_names = { "Bronze axe", "Iron Axe", "Black Axe", "Steel Axe", "Mithril Axe", "Adamant Axe", "Rune Axe", "Dragon Axe" }; if (Inventory.find(axe_names).length > 0) { // If the length of the returned value if greater than one, that // means we have an axe in our inventory. if (Banking.depositAllExcept(axe_names) < 1) // We failed to deposit our items. Let's exit and return false. return false; } else { if (Banking.depositAll() < 1) // We failed to click the deposit all button. Let's exit and return false. return false; } // Okay, our items should get deposited. Let's wait and make sure they // get deposited. return Timing.waitCondition(new Condition() { // Since we can only enter the bank method if our inventory is full, // let's wait until our inventory is not full. If it is not full // before the timeout, return true. Otherwise, return false. @Override public boolean active() { return !Inventory.isFull(); } }, General.random(3000, 4000)); } We have finished coding the basic functionality of the script. We forgot to include a Script Manifest, so let's do that now. A Script Manifest tells the Script Manager details about our script. To do this, we include the ScriptManifest (org.tribot.script.ScriptManifest) runtime annotation right above the defining of the script class. @ScriptManifest(authors = { "TRiLeZ" }, category = "Woodcutting", name = "Basic Willow Cutter", version = 1.00, description = "Cuts and banks willows in Draynor.", gameMode = 1) public class TutorialScript extends Script { We have finished writing a basic Draynor willow cutter and banker. We could go further and add more features and functionality such as paint, but that will be covered in a different tutorial. Let's move on. 5. Scripting Tips When piecing together a script, try and test each method piece by piece. Doing this makes sure that code is functional before moving on to coding another section. It was make things easier when you finish writing the script, and try testing for the first time. The script may not work correctly on the first try, and might need to be modified in a bunch of methods. Doing testing piece by piece will reduce the amount of end modifications needed, and it will also help you find bugs easier. Avoid linear coding. If one action fails in a line of actions, the script will try to perform the next actions, but will fail to do so, and will screw up. Check the returned value of API methods. If the method failed to do something, or if requirements aren't met, then don't execute the code that follows. Another benefit to not using linear coding is being able to start the script at any location/state, and the script will be able to pickup where you are, and continue to do what is needed. With linear scripts, you are restricted to starting at a certain location/state. Don't restrict your users that way. Read the source code of others; specifically, from scripters who have more scripting knowledge than you. I have a bunch of open source RS3 scripts. Those may not be the same as an Old-School script, but they'll show you a great script structure, and other great scripting mechanics. Read the TRiBot API documentation. 6. Things to Check For NullPointerException (NPEs) These occur when a variable is null, and you try to perform an action (other than a null check) on that variable. They are simple to prevent. The API will state whether or not null is a possible result of the API method. If the method can return null, you need to: Store the returned value in a variable. Null check that variable. If not null, you can perform actions upon it. Null checking is like so: if (variable == null) //Oh no. The variable is null. Let's not perform any action upon it. Note: theMethod() != theMethod() Values returned by methods may not always be the same. The first could be not null, and the second could be null. Do not null check the return of a method unless you store that returned value in a variable, then null check that variable. Example: if (object.getDefinition() != null) { final String name = object.getDefinition().getName(); } The first call to getDefinition() may not result in a null returned value, and would pass the null check. The second call to getDefinition() could return null, resulting in an NPE. In this case, the returned value of getDefinition() should be stored in a variable. That variable should then be null checked. After the null check is passed, getName() can be called upon that variable. IndexOutOfBoundsException This occurs when you try to load an element from an array which is not within the bounds of the array. This exception is thrown when an array element is loaded from from index such that: index < 0 index >= array.length Always make sure to check the length of the array before trying to grab an array element at an index. Also, never try grabbing an array element at a negative index. Negative indices don't exist. Index checking is simple: if (index >= 0 && index < array.length) { //The index is within the bounds of the array. //We can pull the value of array[index] now. } Sometimes checking index >= 0 isn't necessary if you already know index isn't negative. Infinite Loops Infinite loops occur when a thread never exits a loop. Typically, these are while loops. Make sure to use a timeout on loops to prevent this. Inefficient Coding There exists so many possibilities which inefficient code can exist. I'll give just a few pointers: In while loops (sometimes also other types of loops), make sure to include a sleep at the top of the loop. If the loop contains no sleeps, it will execute the code of the loop as much as possible, and as fast as possible. The loop will use as much CPU power as it is able to. Avoid this. Store returned values from methods in variable if you are going to use the value twice. You may already need to store the value in a variable to do a null check anyways. If you are waiting for a condition, make sure to use appropriate sleeps. If you don't need to perform an action immediately after a different action, or if a few hundred milliseconds doesn't harm the outcome of whatever you are doing, use a larger sleep rather than a smaller one. Larger waits will reduce CPU usage. When using object finding, doing set the tile radius too large. If an object is expected to be within 10-20 tiles of your character, don't search for the object with a radius of 60 (unless there is a reason to). Don't define all the needed variables of a method all at once. Define them one at a time, then inspect the variable. You may not need to use all of the variable before coming to a conclusion. 7. Bug Fixing A lot of scripters here haven't quite yet grasped the concept of bug finding and fixing, so here we go. First, you have to identify the problem. Let's create an example... the script isn't clicking on the oven (cooking script). Next, you have to identify the code that is responsible for performing the action which isn't being performed. In our example, we have to find the piece of code that clicks the oven. Next, try doing a brief scan of your code and see if you can find any obvious logic errors. If weren't able to solve the bug with a brief scan, then try debugging code. Here's what I suggest: using println. Use println to determine if a section of code is being executed or not. If it's not being executed, try to find where the execution cuts off. Find the exact position where the execution cuts off. This cut off will likely help you fix the bug. Identify why the execution cuts off at where it does, then fix it. You will probably also have to check variables. Check all variables, and all method return values in suspect. The way you check variable is you println their value(s). In our example, we should have inserted printlns to make sure our oven clicking method was being hit, and we should have checked the variables involved in clicking the oven. That's the gist of bug fixing. Think about what is going wrong, what code is responsible, and why the code is failing. Println everything. 8. Conclusion That concludes this scripting tutorial for now. I may expand it in the future. Warning: I may or may not respond to individual scripting questions on this thread. Here is the final script from this tutorial:
  8. 19 points
    Combat AIO fighter [lite edition] Combat AIO is TRiBot's most advanced combat script. Written by Assume, one of TRiBot's most popular scripters Combat AIO strives to be the highest quality script available. Features: AIO CombatCustomizable lootingCombat radiusSaving your settingsCustom API's for eating, prayer, equipment swapping, combat, monster selection, and pathingPremium features: All lite edition featuresfull potion supportfull special attack supportcustom pathing supportbankingGuthans HOW TO INSTALL: Go to the tribot repository and install it. Bug report format: TRiBot Version: CombatAIO Version: Using Looking Glass (y/n): Operating System: Using VPS (y/n): Using tabs (y/n): Bot Debug (Pastebin ONLY): Client Debug (Pastebin ONLY): GUI Setup Screenshots (Imgur ONLY): Stack Traces (Do at least 4 seperate times, Imgur ONLY): Once you have filled out the above form, type a description of the bug, and any additional information you deem necessary. If you do not follow the bug report format, your bug reportwill be ignored. How to Copy Debugs How to Print Stack Traces Progress and bug reports are appreciated, enjoy!
  9. 18 points
    Auto Woodcutter is a minimal all in one woodcutter. Reviewed and Rated 5/5 Stars at RSBotSpot - Preset locations - Custom locations - Shift Dropping - Mouse Key Dropping - Bird Nest support Script Support: https://discord.gg/FDnMbkU Want to help keep this script up to date? Encoded gladly accept OSRS gold and bond donations.
  10. 18 points
    How does it work: 1. Creates an account. 2. Designs a female rs character. 3. Skips tutorial island. 4 Searches for and follows random male players asking if they want a girlfriend. (handles doors as well) 5. Successfully engages in "flirty" conversation with other players. 6. Eventually asks for money. 7. Will accept trades and has a small chance to trade the player on it's own. 8. Eventually admits that the bot is a 52 year old pedophile named Alex and awaits for the victim's response. 9. After receiving a response, the script will take a screenshot and save the file to your computer. Upcoming releases: Script that reports all nearby players for no reason Player harassing scriptBegging scriptSpam trading scriptDancing for money scriptScript that follows random players
  11. 18 points
    Leaning Java with TRiBot - Program Structure Click Here for a List of All Tutorials If anyone would like to provide any advice or feedback on the tutorial, please message me on Skype. I want to keep the comments to questions as much as I possibly can, so people can learn not only by reading the tutorial, but also reading the rest of the thread. Thank you! Introduction As always, be sure that you read every line of this tutorial carefully. If you don't, you are going to find yourself very lost. When I tell you to stop and think about something, I'd definitely recommend that you listen! By now you should have read, and hopefully loosely understand, my 1st tutorial. If you haven't, I would highly recommend doing so before reading this. Now then, let's get into it! In the previous tutorial I talked about how Java is an object oriented programming language, and the basics of what that means. You probably thought to yourself "that's super cool and everything, but I don't feel any closer to being able to write a script than I did when I started". I can only imagine your face right now. While you might feel that way, I can promise you that you have definitely made a huge step in the right direction! It's going to be a little while until you can apply what you learned, but I promise you, you are going to be glad that you learned it when you did! With that all said, let's get to the point. This installment is going to be all about the basics of how a program is put together. Overview Methods. Classes. Variables. Interfaces. Do those mean anything to you? You might be thinking "sure they do! they are all words!" If that's what you're thinking, you're in the same boat that most other people reading this is in. Congrats! Throw yourselves a yacht party, because that's going to be one big boat! Horrible jokes aside, the point is that you aren't alone in this. Lots of other guides you may or may not have tried to already read tend to throw these terms around like you're already a master at programming. Didn't feel very good, did it? So, let's backtrack a bit. How a Program Works As I mentioned in the previous tutorial, all programming really boils down to is telling the computer to do something, and the computer doing it for you. Ever stopped and thought about why the term is "programming language"? When you type code, you are literally telling the computer what to do. You are communicating with the computer. Parts of a Program Every programming language requires you to spell out what it is that you want the computer to do. For example, let's say that you want to write a woodcutting script. At some point in your program, you are going to write a line of code that tells the computer to chop down a tree. However, chopping a tree has multiple parts to it, right? What is the methodology you are going to use for chopping down the tree? Before you write any code, or learn anything else, I want you to think about that. Keep thinking until you have a general idea. It shouldn't take you more than a couple of seconds. Done thinking? Good. You should probably have been thinking something along the lines of this: find closest treewalk to closest treeclick closest tree That is an example methodology the script could use when chopping down a tree. Of course, that is an over-simplified example. You would also have things such as turning the camera, clicking the correct option, etc. The best advice I can give you when you're trying to figure out the methodology of something is to think about what you would do as an actual player when playing RuneScape, both physically and in your head; for example, finding the closest tree. That's something you do in your head, but is still incredibly important. Methods Before you can start linking together various parts of your methodology, you must first have them ready to be used. In Java, the term used to define part of a methodology makes perfect sense: a Method. That makes things easy to remember, doesn't it? Remember how Java uses objects? Methods are used to tell objects what to do and how to do it. Look back at the woodcutting example from the previous section. You can think of each line as a different method. Notice how each method describes what your player is doing? First, your player find the closest tree. Then your player walks to the closest tree. Then your player clicks the closest tree. Your player is the object, and what you are telling your player to do are the methods. Let's go back to the car example from the previous tutorial. What sort of methods would a car need to use? 90% or more of you probably won't, but I'll ask anyways: Stop for a moment and try to think of what a car might need to do. Here's what I came up with: AccelerateTurnReverseStopTurn OnTurn Off There are many more that you might have thought of, those are just some off of the top of my head. Let's look at another analogy. If you are still having a hard time grasping what a method is, pretend you are a teacher writing a homework assignment for his or her students. Your assignment must have instructions. You are going to be writing out the instructions on a piece of paper, and giving the instructions to your students. Now think of each step of your instructions as a method. The only difference is that when you are writing a Java method, you are writing in Java instead of English. That's all a method is; a set of instructions for an object to do. Classes I want you to take a step back, and I want you to breath. Why, you ask? This next step might be a bit confusing. If it is, that's okay. It's a lot to wrap your head around. This is going to be the last thing I cover before we dive into writing code! Remember back when I was talking about objects? A car is an object, a goat is an object, etc. Let's really start thinking about this for a moment. "A goat is an object". What is this statement saying, exactly? This is saying that each individual goat is an object. You're probably like "ok...?" I don't blame you, that seems like a really, really boring and anti-climactic statement. In reality, it's an important concept to understand. In the previous section you learned that methods make objects do something. You understand that you are going to be using methods to give objects instructions (if that isn't the case, re-read the previous section). However, it isn't clear where these methods "go". You know they are "attached to an object", but what does that even mean? Methods are a type of Java code. By now you should understand that. Objects, on the other had, are created by code. Again, "da fuq?" Okay, let's take another step back. Objects are created by the computer. Let's look at RuneScape for example, specifically at trees. There are, I don't know, a bazillion trees in RuneScape? Each tree is an object that was created by the computer. Each player is an object. Each monster is an object. But where did they come from? All objects are created by classes. A class contains a set of instructions that define what an object is and what it does, which you already know are called methods. In the outline above, you will see that the light green shows where the class is, and the yellow shows where the methods are. You can see how all of the methods are contained neatly within the class. This diagram is very similar to how a regular java class is laid out. In one of the next upcoming tutorials, you will learn how to use classes to create new objects. Simplification: An object is something created by a computer. The class is the instructions to the computer how to make that object. Conclusion This is the end of the second installment of my Learning Java with TRiBot tutorial series. This session was all about starting to get an idea of how a java program is structured. If there is anything listed above that you would like a graphical representation of so you can visualize it better, please let me know and I will do my best to include it. If there is anything you don't understand, please let me know! If you didn't understand it, chances are someone else didn't either. Click Here For Tutorial #3!
  12. 17 points
    Tau Grand Exchange || Clicking the button above will NOT charge your TRiBot account. What is Tau Grand Exchange? What does it do? Tau Grand Exchange is a money-making script that uses the Grand Exchange to buy items at a low price and then resell them at a higher price to make a profit. This process is called "flipping" or "merching". One of the great things about flipping is the more GP you start with in your inventory, the higher your income rate is going to be. This means that as the script runs, your GP/hr goes up! To make money with Tau Grand Exchange, the only thing you need to do1 is tell Tau Grand Exchange which items you want it to flip for you. Tau Grand Exchange's advanced AI (artificial intelligence) will handle the pricing, offering, cancelling, item choosing, and everything else for you automatically. Why Use Tau Grand Exchange? > Low Ban Rate 1 < > No Account Requirements < > Scaling Income Rate (More GP = Higher GP/Hour) < > Incredibly Easy To Use < > In Addition to Merching, Tau GE Can Also Sell Items For a Higher Profit From Standard Goldfarms < > Active, Friendly, and Helpful Support Team - Paid directly by me, TacoManStan, to ensure you get the best botting experience possible < Primary Features > Automatic buying/selling (flipping) of items < > Trade unlimited items at once < > Automatic Item ID searching < > "Aggressiveness" modifier, which allows you to change how fast the AI trades items < > Automatically adjusts to market prices and price changes < > Optimal gold/item management and distribution < > Intelligently chooses the most lucrative items 2 < > Artificial Intelligence (See Below) < > and much more! < Artificial Intelligence (AI) Tau Grand Exchange comes equipped with a powerful AI that controls most aspects of the script for you. Below you can see a list of some of the things that the AI does/controls for you: > Logout times 3 < > Item prices, based on current market < > Item trade timing < > Item trade quantity < > Offer abort timing < > Loss mitigation < > Crashing and/or unstable item evasion & management < > Optimized item offer selecting 2 < > Dynamic Anti-ban < The AI uses a plethora of variables and formulas to try and find the absolute best way to trade each and every one of the items that you add to the script. The AI is constantly being improved and adjusted so that you have to do as little work as possible when using Tau Grand Exchange. GUI Preview Using Tau Grand Exchange via Script Arguments (Commands) Most goldfarmers will find script arguments not only incredibly useful, but a borderline necessity for an efficient goldfarming experience. You can start Tau Grand Exchange by using TRiBot's integrated script argument system instead of using the setup GUI. All you need to do is use the GUI once to create an options profile, and then you can load that profile via script arguments instead of having to use the GUI every time you start the script. List of Available Script Arguments: i_prof: The name of the item options profile you want to load. This value is required and cannot be omitted. ai_start: Type true if you want to start the script using all AI options. Type false otherwise. If omitted, this value is true. rec_sig_data: Type true if you want to record signature data. Type false if you do not. If omitted, this value is true. low_cpu_mode: Type true if you want low CPU mode to be enabled. Type false if you do not. If omitted, this value is true. ignore_checks: Type true if you want the script to ignore error checks. Type false if you want the script to stop if an error is encountered. Use only if you intend on watching the script. Enter script arguments using the following format: key1=value1 : key2=value2 : key3=value3 Example script argument usage: i_prof=low prices : rec_sig_data=false : ez_start=true Dynamic Signature What is a Dynamic Signature? A Dynamic Signature is an image that will automatically update to display information related to your usage of a particular script, in this case, Tau Grand Exchange. You can put this image into your TRiBot forum signature to show off your progress to other users! Getting Your Own Personalized Dynamic Signature Copy and paste the following into your signature. Replace "Your_Username" with your TRiBot username: [img=http://www.sigmatribotserver.com/users/Your_Username.png] If you are VIP or VIP-E, use the following link instead: [url=https://tribot.org/forums/topic/48580-up-to-1mhr-abc2-level-10-tau-grand-exchange/][img=http://www.sigmatribotserver.com/users/Your_Username.png][/url] Capital letters will be shown in the image (IE, "users/Your_Username.png" will display differently than "users/your_username.png") Tau Grand Exchange User-Submitted Progress Reports Current Best Progress Report Some More Progress Reports Tau Grand Exchange Account Requirements There are virtually no requirements to use Tau Grand Exchange. The script will attempt to walk you to the grand exchange from anywhere in Runescape using webwalking, and then will start merching the items that you have listed. For the safety of your account, it is now required that you manually walk to the Grand Exchange. It is recommended that you start with at least 3m-5m when using Tau Grand Exchange. That said, any amount will allow you to make some amount of money. For example, I managed to make 50k/hr with only 100k as my starting cash stack! 4 However, generally speaking, you should aim for around 0.75-1.5% of your gp stack per hour. So for example, if you are using 10m, you should aim for 75k-150k/hr. If you have 20m, you should aim for 150k-300k/hr, and so on. You can make less than that with a poor list, and much more than that with a good list! If you aren't in that range, keep refining your list and you'll be there in no time! How to Make Money with Tau Grand Exchange Making money with Tau Grand Exchange is easy! Since its release, the AI has improved dramatically to the point where it can make decent money with even sub-par item lists, and amazing money with good item lists! All you need to do is add items, enter the correct buying limit, and press Ez Start! That's all there is to it! Note that various settings might increase your income rates further if you know what you're doing. However, I always recommend using Ez Start for new users. ---> Change Log (Click Here) <--- Upgrade Policy & Instructions Unfortunately, TRiBot does not currently provide an easy way for Premium Scripters to allow their users to upgrade their payment plan, such as switching from the Monthly Auth to 3 Month Unlimited payment plan. However, as I believe my users should have this option, I have devised a workaround, outlined in the upgrade policy shown below. Please CAREFULLY read the following information CAREFULLY before submitting your upgrade request. (Yes the double-carefully was intentional) Rules, Terms, and Conditions Yeah, I know, rules are annoying and boring. However, these rules are going to save you some money, so you'd be wise to read up! You must have purchased the script within the last 10 days for monthly plans, or 5 days for bi-weekly plans. Before your original purchase is refunded, you must first purchase the plan you are upgrading to. Each user is allowed 1 upgrade every 6 months. Upgrades cannot be used to take advantage of sales. In other words, if a sale was not active during your original purchase, your upgrade will not be eligible for the sale either. Failure to follow the upgrade instructions properly may result in your original payment not being refunded. Instructions Before doing anything else, read the Upgrade Rules listed above. Send me a PM requesting your upgrade. No formal instructions here; just be polite and descriptive. Immediately after sending it, add the head of my support team, @Butta, to the PM. Wait for either myself or @Butta to approve your upgrade request. Once your upgrade request has been approved, you have 48 hours to purchase your upgraded plan before your upgrade approval expires. Respond back to your original PM indicating that you have purchased your desired upgraded plan. Although most refunds are issued within a couple hours, please allow up to 48 hours for your original plan to be refunded. Note that weekend requests typically take longer. Important Information Tau Grand Exchange does NOT support Mac OS at this time. If you intend on running Tau Grand Exchange on a Apple computer, it is highly recommended that you install a Windows/Linux VM, or use a VPS. Update: As for 12/24/2017 mac support development has begun. There is currently no ETA, but the update is in active progress. The "Buy High -> Sell Low" price checking feature is no longer supported. Do NOT enable price-checking until Tau Grand Exchange 2.0 has been released, or an announcement has been made that the feature has been fixed (unlikely). All scripts always have a chance of getting you banned, including Tau Grand Exchange. Due to the fundamental nature of Tau Grand Exchange, its ban rate will always be much lower than other scripts. Ban rate subject to TRiBot ban rate and current Jagex anti-bot levels. Applies only to items that have been entered into your list. Does not apply to all items in the game. Contrary to what may seem intuitive, frequently logging in and out disrupts Jagex's anti-bot data collection, therefore lowering your chances of getting banned. For the safety of your account, the option to disable/change logout times has been permanently removed. This was achieved during a booming market with lots of prior merching experience. I am in no way guaranteeing this level of return on investment; I am merely indicating that it is possible.
  13. 17 points
    Hello TRiBotters, For the past six months, we have been collecting human mouse data for the purpose of implementing real human mouse movements into TRiBot. Most botting clients use computer generated, pseudo mouse movements. Over my 6 years of bot development, I have never seen a botting client which can produce realistic pseudo mouse movements (in my opinion). The problem is that pseudo mouse movements are too predictable and alike. They are either all too curved, too straight, or too random (humans aren't random). Since the RuneScape client can track mouse movements and send it to Jagex's servers, Jagex are able to generate statistics based on the player's mouse movements, which they can then use to detect bots (If they want. Only Jagex employees can know exactly how their detection systems work). Using pseudo mouse movements is too much of a risk to put on people using TRiBot. This is the reason why I started the Human Mouse Project. By using real human mouse movements instead of computer generated, pseudo mouse movements, we can avoid detection to the extent by which Jagex uses mouse data in the detection process. Every user using the Human Mouse has a specific mouse data collection. This collection will have been generated by a single, unique (human) individual. This mouse data collection will share all of the specific mouse movement characteristics of the person who generated it. We have a vast collection of these human mouse data collections. A flaw with many botting clients is that all bots will share the same pseudo mouse movements characteristics. However, with TRiBot's Human Mouse, on top of using real, human mouse movements, we have different sets of human mouse data collections, each with their own set of characteristics. This is the only way to ensure that Jagex won't be able to identify TRiBot via collected mouse movement data. We have one limitation though, which is that not every TRiBot user will be able to use the Human Mouse. This is because we want each TRiBot user's human mouse data to be as unique as can be. We don't want many users all using the same human mouse data/characteristics. Because of this limitation, we are capping each mouse data collection at 10 TRiBot users. Since we only have about 70 unique human mouse data collections, we can only offer the Human Mouse to about 700 users (at this time). For that reason, we will be limiting the Human Mouse to VIP-Extended users only. However, if you want access to the Human Mouse without purchasing VIP-Extended, or want to contribute to the project, you can follow the instructions here for building your own human mouse data collection: https://tribot.org/forums/topic/39131-human-mouse-project-data-collection/ With the community's help, we can beat Jagex's detection systems. Thank-you, TRiLeZ
  14. 17 points
    Posting a proper bug report for a script isn't very self-explanatory and is quite ambiguous for many users, thus resulting in many bug reports to look something like this: “script not working. please fix”“so many bugs”“getting stuck”"script very slow! plx fix" Although it’s quite understandable to not know what information would be useful in a bug report (You would generally need to be quite fluent with computers or know a bit of programming), reports like these generally do not help the script writer debug the problem in most cases. (By most, I would say over 90% of the time) Script writers usually run through a series of tests before releasing their scripts. If the script is released without the tag BETA or Development, it would generally mean that they have fixed all problems and are not experiencing any problems with the script. It would be hard helping you without any information since the script was fine the last time they have ran it and would not know where to start. This tutorial will help you provide the script writer as much information as possible to fix an issue with the script. Why follow this as a guideline? If you post a bug report without sufficient information, this is how it would go: You post report and wait for me to replyI receive report, look over it and find out I have insufficient information. I tell you to post more information and wait for you to replyYou post more information and I will need to look over it againThis can go on for days. Proper Bug Report Format Step 1: Copy and Pasting Client and Bot Debug This can be found near the bottom edge of the Tribotclient. Press shift and click to selectively choose which lines to copy from. It would be preferred to copy both debugs completely and indicate to the script writer the time the problem have occurred (e.g 2:25:32). This is almost ALWAYS necessary. Even if the client or bot debug is spamming the same line over and over, the interval at which the line is being spammed may help the script writer know indicate where the problem may have occurred. Step 2: Screen Shot/GIF/Video Depending on the issue, you can decide for yourself which is the most appropriate. Many script writers such as myself put the bot status on the paint which will tell us at which state is the problem occurring at. Script writers know very well how their script works. What you see may not be what they see. I once had a user who refused a screenshot because he deemed it was useless because nothing was going on but proved to be a major part of what allowed me to debug the issue when he finally gave me a screenshot. Step 3: Stack Trace This is generally needed when a script is stuck. This will indicate exactly where the script is being stuck as and is very useful information. It can be found here (Print Script Stack Trace): It will look something like this once pressed (It will be visible in the Client Debug): [02:51:28] Script Stack Trace:[02:51:28] java.lang.Thread.sleep(Native Method)[02:51:28] org.tribot.api.General.sleep(yh:170)[02:51:28] scripts.daxHunter.utils.trap.Action$2.active(Action.java:44)[02:51:28] org.tribot.api.Timing.waitCondition(ko:50)[02:51:28] scripts.daxHunter.utils.trap.Retrieve.twoTickLaying(Retrieve.java:138)[02:51:28] scripts.daxHunter.utils.trap.Retrieve.actionOnTrap(Retrieve.java:65)[02:51:28] scripts.daxHunter.managers.BotManager.bot(BotManager.java:189)[02:51:28] scripts.daxHunter.Main.run(Main.java:110)[02:51:28] java.lang.Thread.run(Thread.java:745)Step 4: Description of Problem Giving detailed information on the issue is also a crucial part in allowing the script writer to debug your issue. You should indicate what causes the problem and how often the problem occurs. Step 5: Your Settings Provide the settings and modes which you have ran the bot in. In most cases, it would be screenshot of your settings in the GUI.
  15. 17 points
    This tutorial will teach users how to reduce CPU usage. Client Paint Delay This settings controls how much delay TRiBot should give the client with every frame. The more to the left, the higher the FPS, resulting in more CPU being used. The more to the right, the lower the FPS, resulting in less CPU being used. MOST SCRIPTS DON'T NEED 40 FPS TO BOT. MOST WILL BE FINE WITH 4-10 FPS. NO, THE CLIENT DOES NOT LAG WHEN YOU SLIDE THE BAR TO THE RIGHT. THAT IS DELAY, WHICH REDUCES CPU USAGE. I recommend using between 40-100ms delay, depending on how good your processor is and if you want to save CPU. For my desktop, TRiBot uses about 6% CPU on average with 40ms delay. I'm not trying to run as many bots as I can, so I leave it at 40ms. Client Sleep Modifier The more to the left, the more CPU usage. The more to right right, the lower the CPU usage. This setting is hardly even used within TRiBot, so just leave it at 1.0. Lite Mode Use Lite Mode if you want to reduce CPU/memory usage. Minimize TRiBot When Not Interacting With It Minimizing TRiBot will lower the CPU usage. If you aren't interacting with TRiBot, please minimize TRiBot. Max Heap Size This controls how much memory you allow the Java Virtual Machine to use. Please do not use more than 256mb per client that you run. Ex: Don't use more than 256mb if you are only running one client. Do not use more than 512mb if you are only running two clients. Do not use more than 1024mb if you are only running four clients. Try using this formula for the amount you should allocate: 256MB + ((amount of clients - 1) * 128MB) Warning: This formula isn't perfect. The higher you set this value to, the more amount of RAM the Java Virtual Machine will use. If you give one client 1024MB of a heap size, expect higher RAM usage than you would when using 256MB. TRiBot does not directly handle memory usage and allocation. The Java Virtual Machine is responsible for handling memory, and in a very complex way.
  16. 17 points
    Leaning Java with TRiBot - Variables Click Here for a List of All Tutorials If anyone would like to provide any advice or feedback on the tutorial, please message me on Skype. If you have questions about the tutorial, please feel free to comment on the thread, and I will do my best to answer your questions! Introduction As always, be sure that you read every line of this tutorial carefully. If you don't, you are going to find yourself very lost. When I tell you to stop and think about something, I'd definitely recommend that you listen! By now you should have read, and hopefully loosely understand, my 3rd tutorial. If you haven't, I would highly recommend doing so before reading this. Recap If you recall, a Java program consists of classes. The classes create objects, which are then controlled by methods. If this doesn't make any sense to you, you should review my previous tutorials. By now the above concepts should make at least some sense to you. If not, as always, feel free to message me on Skype (tacomanstan), or even better, post on the thread so others can benefit from your questions! What is a Variable? If you've taken any level of algebra at any time in your life, you probably already know what a variable is; x, y, z, a, b, c, etc. Those are some of the more commonly used variables in algebra, and they can be really annoying to keep track of. Luckily for us, Java isn't algebra! Yay! Variables in Java Right now you're feeling pretty confident, and you should! You've learned a lot in these last 3 tutorials. However, if you are like me, at this point you have something nagging at the back of your head: "How do I actually tell the program what an object is?" If you didn't understand what I meant by that question, that's okay. I'll explain to you the problem: When you want to make an object, you can visualize it in your head. You know what the object is, what it does, how it does it, what its purpose is, etc. How can you write code that will make the computer understand that object in the same way that you do? "CAN YOU HEAR ME?" Instances Let's pretend for a moment that we've made a Car class (recall that classes are in charge of making objects). We then use our Car class to create 5 cars. Each of those cars is called an instance. A good way to understand the concept of an instance is to look at World of Warcraft. In World of Warcraft, many dungeons are called "instance dungeons", or just "instances". When you enter these dungeons, you are entering a new instance of the dungeon. The only people in that dungeon are you and your party members. Let's look at a RuneScape related example: Worlds. Each world is an instance of RuneScape. You know how that works. You hop to a different world and almost everything is the same as the world that you just hopped from. Almost. There are obviously going to be differences between each world (number of players, for example), and those differences are what make understanding instances so important. Now let's go back to our car example. The most important thing to understand is that even though each car instance was created by the same class, each car might (and probably will) be completely different. Just like how each world in RuneScape has different things going on, the same applies to our cars: One car might be yellow, one might be blue. One might have a Michelin tires, one might have Good Year tires. One might be longer than the rest. One might 2 doors, another might have 4. The list goes on and on! Objects with Variables In Java, a variable that is part of an object is called an instance variable. Instance variables define the properties of an object. Just like how methods are in charge of doing something with an object, instance variables are in charge of defining what an object is. Think about a car. Think about all of the different parts of a car. Think about the characteristics of a car. You can also look at the picture above for some inspiration. Here's what I came up with as some examples: Steering wheel Wheels Color Engine Doors These are just a couple of things that make up a car. A car is incredibly complex, so there are many, many other things that you could have come up with. That list, as you probably guessed, is a list of instance variables. Instance variables can be anything that defines the object that they are part of. Notice how "color" and "wheels" are both on the list? While at first it might seem like those are completely different things, they really aren't. Think about it; a car has wheels, and a car has a color. One of those characteristics is more detailed than the other, but they are both characteristics of a car. Here you can see a modified Car class from my second tutorial: Variables in Methods Instance variables aren't the only types of variables in Java. Sometimes you need to use a variable in the same way that you would in algebra. For example, let's say you have a class called Rectangle. We have made 2 instance variables: width and height (remember these variables help define the rectangle). We have also made a method: getArea(). If you haven't already, try and think for a moment as to why I chose not to make an instance variable for the area of the rectangle. Actually think. Are you thinking? Stop reading. Stop it. Think! Alright well if you've made it this far you've either already thought, or you're just ignoring me. That's okay, let's just move on (you didn't hurt my feelings or anything). Hopefully that gave you enough time to at least try to think that through. If you couldn't think of anything, that's completely okay; most people couldn't think of anything either. As I'm sure you guessed, area is another variable! But wait, hold on a minute... It's not where width and height are. That's because area isn't an instance variable! Instead of being created as an instance variable, area was created as what is called a local variable inside of the getArea method. Local variables get their name because they are created inside of a specific method. A local variable is local to a certain method. So you're probably noticing how I still haven't answered the most important question: "Why isn't area an instance variable?" Look at the width and the height of a rectangle. Those are pretty obvious characteristics, right? In fact, they are the only two characteristics of a rectangle. You're probably thinking "What...? Then what is the area if it's not a characteristic?" To answer that, think about what you need to make a rectangle. All you need the width and the height. That's it. One you have the width and height, the width and height are then used to calculate the area of the rectangle. This makes the area of the rectangle a calculation instead of an instance variable. Useful Tip: If you are ever finding yourself wondering if something should be an instance variable or a calculation, think about it this way: If you set all of the instance variables in a class to a random value, would the resulting object still make sense? If the answer to that question is no, at least one of the instance variables you've chosen should be changed to be a calculation. For example, let's make area an instance variable, and try with a rectangle. I'll set each to a random value between 1 and 20. Here's what I got: width = 5 height = 17 area = 2 You should be able to see pretty quickly what the problem with that is. The area of a rectangle with a width of 5 and a height of 17 can never be 2. Making area an instance variable caused the rectangle to fail the "random value" test, so you know that area must be a calculation. Conclusion This is the end of the fourth installment of my Learning Java with TRiBot tutorial series. This session was all about learning what variables are, and the basics of how they are used in a program. At this point, we have gone through all of the aspects of a basic program. Congratulations! This is the last tutorial before you get to start writing code, and write your first program! If there is anything listed above that you would like a graphical representation of so you can visualize it better, please let me know and I will do my best to include it. If there is anything you don't understand, please let me know! If you didn't understand it, chances are someone else didn't either.
  17. 17 points
    Hello community, I am extending the previous Reaction Timing Data Collection Project to record much more data than before. This new project will collect data on reaction times, more reaction time factors, how the player interacts with interfaces/items, and much more! The aim of this project is to study how real players interact with the game. With this knowledge, we will build upon TRiBot to reflect human-like gameplay based on real human data. If scripts successfully implement new playing mechanisms based on the data collected, I suspect that there will be a drastic positive effect on the ban rate. This is where you come in. I need many users to take part in this data collection program. The details are listed below. If you care about bans and would like to avoid them, then please partake in this program. This project is TRiBot's most important project regarding fighting bans. The data collected from this will re-shape our current antiban, and will lead to a new generation in human-like scripts. The data collected has the potential to cut bans to a small fraction of what they are now. Please contribute to this project. Do You Qualify? You can either do woodcutting, mining, fishing, combat, or cooking (via range only). Reaction times currently won't be collected for any other skills.You must play for at least 2 hours straight. If you can play for longer than that, please do so.How Do You Participate? Activate and run this script. Play RuneScape like you would normally. Make sure to only do one of the activities listed above. Feel free to tab out / watch youtube / watch netflix / text your friends / take bathroom breaks if you want. Your aim should be to play normally. Try and play for at least 2 hours straight. Don't split those 2 hours into 30 minute sessions here and there because I'm not able to study human fatigue if you do that. After those 2 hours of playing (or more) are up, stop the script. Once the script has stopped, TRiBot will print something like " Wrote data files to "C:\Users\TRiLeZ\AppData\Roaming\.tribot\reaction_times\1422335835540"." This is the directory which TRiBot dumped all of the data. Upload the data (all 8 files) to a forums post in this thread. Include a comment about what activity you were doing while collecting the data, and the respective skill levels.Note: This is not a race. Do not aim for having the lowest reaction time possible. Please relax and play as you normally do in order to ensure reliable data.
  18. 17 points
    Leaning Java with TRiBot - The Very Beginning Click Here for a List of All Tutorials If anyone would like to provide any advice or feedback on the tutorial, please message me on Discord. I want to keep the comments to questions as much as I possibly can, so people can learn not only by reading the tutorial, but also reading the rest of the thread. Thank you! Introduction Hello everyone! If you are reading this, you want to script for TRiBot, but you don't have any experience with the Java programming language. To that I say... welcome! You are not alone. Let's first start off by saying that yes, in order to script for TRiBot, you must know Java. If you're here, I'm sure someone has probably already told you that, or you figured it out for yourself. That being said, there is nothing to fear! While it was highly discouraged until now, with this tutorial guide you can now learn Java through scripting for TRiBot! Before we jump right into things, let's make something clear; this isn't an instant journey. You need to learn Java, not just copy some code. This is going to take some time. Luckily, I've been told that I'm pretty good at explaining things, because I remember how it felt to be new to Java. Every tutorial you look at seems to assume that you have at least some coding experience. That's not the case with this tutorial/guide. That being said, that means that it is important that you read the entire tutorial. Everything I type here is here for a reason. Don't skip things, you'll just wind up getting confused, and you'll regret it later on. With that in mind, I have decided that I'm going to start at the beginning. The very beginning. Now let's get started! Introduction 1.5 I lied. We're not getting started just yet. One more quick thing first. There might be words that you don't know the meaning of in this tutorial. You might not be from the US (lingo is a bit different), or you might just not know the meaning. Every word that I think anyone reading this might not understand, I will turn into a link to either the dictionary.com or wikipedia.org definition of the word. That being said, I'll do my best to keep the language simple. Tutorials are easier to read that way anyways, even if you do understand the language. Alright, now let's get started! The Very Beginning At this point, most other programming books dive right into the nature of a computer. They'll talk about RAM, CPUs, and other acronyms that you may or may not understand. That doesn't matter. At all. Instead, I'm going to start by explaining what Java is. Chances are you already know what programming is. If you don't here's a quick definition: "You write words that make the computer do things that you want it to." That's all you need to know about programming right now. What is Java? Java, as you have probably guessed, is a programming language. More specifically, Java is an object oriented programming language. I intentionally left no link there, because Wikipedia over-complicates things, and therefore I'm going to define it myself. What is Object Oriented Programming (OOP)? When you think of object oriented programming, the easiest thing you can do is think of a car. What just popped into your head? A Mustang? An Avalon? A Focus? A Prius? A Camry? Chances are, pretty much everyone thought of a different car. That right there is object oriented programming. You're probably thinking "wut...?" That's the beauty of it; it's really that simple. Of course, I need to elaborate a bit on that bit. (Note: Let's get something clear. I used this as an example, an I don't really know anything about cars. Okay, moving on.) OOP (remember that stands for object oriented programming) is all about taking the most basic form of something, and then getting more specific as needed. So in that example, we started with a car. You can get more specific than a car though. You can have a Mustang, Avalon, etc. That's getting more and more specific. In fact, if we wanted to break it up even further, we could add different types of cars in the middle, such as "coupe", "sedan", etc. You can also go in the other direction as well. What's more simple than a car? How about an automobile? Now all of a sudden you have trucks, cars, motorcycles, etc. How Far Up Can You Go? When you program in Java, you create things called objects. In the previous example, the "car" was an object. The "automobile" was an object. The "Prius" was an object. Remember when I said that the goal in Java is to get as specific as you can? Well, what's the starting point? If you were to take "car", "automobile", "goat", or anything else you can think of, and you were to keep going up and up and up, getting less and less specific, where would you end up? The answer to that question is: Object. You would end up with an Object. This is the case for everything you do in Java. The entire concept of programming revolves around creating objects. In RuneScape terms, you might want to get access to a tree, or an NPC, or your own player. As you probably guessed, each of those things, and anything else you can think of, is an object. Conclusion This is the end of the first installment of my Learning Java with TRiBot tutorial series. This first section was obviously just the very beginning, and there wasn't even any code! That's okay; you'll be seeing plenty of code soon enough, and you'll be scripting for TRiBot (and writing other Java programs as well, if you want) in no time! Note that if people seem interested in this concept, I'll probably make videos to go along with my written tutorials as well! If there is anything you don't understand, please let me know! If you didn't understand it, chances are someone else didn't either. Click Here for Tutorial #2!
  19. 17 points
    Hi, this is my mining script. it is my first ever script i have written as i am new to programming. I will be expanding this script, adding more features as i learn more. Mat has helped me a lot to write this script. his taught me pretty much everything. Cant forget to mention the help and knowledge JJ has given me! They have both been supporting me when i need it so credit goes to both, Mat and JJ Features: Power mines M1D1 Banks supports all ores Paint - Thanks to Fallen <3 6 hour reset Runite Mining with World Hopper (members only) (Currently Disabled) Essence Mining Locations: Varrock east Varrock west Barbarian village Alkharid Rimmington Lumbridge Yanille Mining Guild Mining Guild Resource Dungeon Dwarvern Mines (Currently Buggy) On Repo. V1.0 : initial release V1.1 : animation ID Grabber, re-wrote mining method so now it only mines the one you choose. (with the help of JJ) V1.2: Added Banking Added Power mining Added M1D1 Fully functional GUI (taught by JJ) V1.3: fixed non-walking issue Added both Lumbridge Added Rimmington V1.4: Added Mining Guild Added Mining Guild Resource Dungeon Added Dwarvern Mines Tweaked Mining Tweaked other things here and there V1.5: Added Paint Temporarily removed Dwarvern Mines 6 hour bypass Toggles Run Minor tweaks overall V1.6: Fixed M1D1 Fixed Walking Re-wrote main loop V1.7: Re-added Dwarven mines BankDeposit Box Support Added failsafes Tweaked Mining Improved banking Lower Ban rate Fixed and Tweaked many things Automatically uses Dep box if 15 dung V1.8: Removed Mining guild, Dwarvern Mines and Resource Dungeons Added Yanille Added Loads more Failsafes Fixed and improved Powermining and M1D1 Fixed Banking and Walking properly Sorted whole script out! V1.9: No longer needs Red outline improved overall script Better M1D1 Better Powermining Added back locations V2!: Improved M1D1 Runite mining World hopper Essence Mining (VIP only) - Varrock only. A new Paint Thanks to FallenShadow! <3 Other Minor tweaks here and there V2.1: Updated to work with RS3 Disabled some features due to major changes. Updated Essence Mining to reduce most of the bugs A lot more! About the Update!: Had to change majority of the script due to game and API changes. Some areas may be a bit buggy however, most work Thanks To FallenShadow for making me a Paint! Looks sexy! you know where to go for the best paints Please give feedback! Especially on the essence miner! Would Love more suggestions please! To-do: Add more locations Fix a lot of the bugs! Add ability to mine more then one specific rock at the same time. New GUI Welcome to suggestions and feedback Thanks Credit: Mat JJ iRoc FallenShadow Script going In Repo
  20. 16 points
    We know many of you use proxies. That's why we are introducing a new proxy system! This new system contains many improvements over the old one, making proxies easier to use, and making TRiBot more flexible. The new system includes: One Proxy Per TabInstead of having a global proxy for every instance of TRiBot, we are introducing "one proxy per tab," where users can specify a different proxy for every tab.Only RuneScape Connections Go Through the ProxyYou won't have to worry about the TRiBot server blocking connections from certain proxies. You also won't have to worry about scripts no showing up in the script selector after a while, script instances dying, or any of the common issues brought along by proxies. This is because connections to the TRiBot server no longer go through the proxy.This also means you won't be prompted for your TRiBot password anymore.User Ability to Change the ProxyDo you want to change the proxy while the client is already running? Right click on the tab and select "Set Proxy," then select the proxy you want to use.If you are logged in to the game, you will have to reconnect to RuneScape if you want to use the newly selected proxy.Integrated Support with the Client StarterThe Client Starter supports using a different proxy for every different tab.Looking Glass is SupportedThe proxy system supports Looking Glass. Cheers, TRiLeZ
  21. 16 points
    Leaning Java with TRiBot - Primitive Basics Click Here for a List of All Tutorials If anyone would like to provide any advice or feedback on the tutorial, please message me on Skype. I want to keep the comments to questions as much as I possibly can, so people can learn not only by reading the tutorial, but also reading the rest of the thread. Thank you! Introduction As always, be sure that you read every line of this tutorial carefully. If you don't, you are going to find yourself very lost. When I tell you to stop and think about something, I'd definitely recommend that you listen! By now you should have read, and hopefully loosely understand, my 2nd tutorial. If you haven't, I would highly recommend doing so before reading this. What is a Primitive? Recall from my previous tutorial that Java is comprised of objects. Objects are created by classes, and controlled by methods. This is useful, of course, but what about much simpler ideas? What if you want to know something that is too simple to be an object, such as the height of a person? That is what primitives are for. Types of Primitives There are multiple types of primitives, but I am going to be focusing on only several of them in this tutorial. The rest are much less commonly used, and I will have a tutorial on them in the future. For now, let's just focus on the following. Int As you have probably guessed, int is short for "integer". An integer is a whole number. An integer can be positive, negative, or zero, but because it is a whole number, cannot ever be a fraction or decimal. Integers are used when a decimal or fraction doesn't make sense. One of the most common ways to use an integer is when you are counting something. If you are counting something, you usually want to count in whole numbers. For example, how many trees are in this picture? The answer is 3. There are 3 trees. Now, I know what some of you might be thinking; "what if there is a half of a tree?". The answer to that is as follows: Don't think that way. Take the following picture for example. While it's funny to say that there are 2.5 men here (the TV show reference which makes it even funnier), there are in fact 3 people in this picture. If you tell the computer that there are 2.5 people, the computer won't understand your humor, and will get incredibly confused and you will get a lot of nasty errors. Another Example: If you are still confused as to why you might need a value that can't be a fraction of decimal, look at the top of your browser window. How many tabs are open? 1? 2? 10? I can bet you that the number of tabs open in your browser is an integer! Aaaand Another Example: Sometimes integers aren't necessary, but they just make life easier. Take a look at your various skill XP values in RuneScape. Imagine how confusing it would be if you could have 32,392.382394 XP in a skill. Double Remember when I said that ints can't be decimals or fractions? As I'm sure you guessed, doubles can be! Doubles represent pretty much any number you can think of. If whatever you are trying to describe should be able to be a fraction or decimal, you should use a double. Here are some examples of doubles: 3.4, 1.0, 1932.2, 2.2912992, -2.1, -3291, 0.0. While integers are usually used to count things, doubles are most commonly used to define properties of things. These would be things like weight, height, the pull of gravity, etc. Boolean A boolean has one of two values: true or false. Booleans are sometimes the hardest primitive for people to understand the usefulness of. To help clarify things, I present to you the following educational image. When you select someone as being "hot" or as being "not", you are selecting a boolean. Is this person hot? True or false? When you select your answer, the program sets a boolean to "true" or "false" depending on what you select. Another Example: Open up pretty much any script on TRiBot that has a GUI. Chances are that there is at least one check box on that GUI. When you press "Start" on that GUI, the script will look at all of the check boxes and see if they are checked or not. How is this done? As you probably guessed, with a boolean! Char You won't be using characters very often (even for advanced programs it isn't very common), but because of their uniqueness, I will mention them briefly. Char stands for character. Characters are exactly that: characters. Anything on your keyboard is a character. Here are some examples: 'A', 'B', 'C', 'G', 'a', 'b', ' ', '%', '~', etc. Conclusion This is the end of the third installment of my Learning Java with TRiBot tutorial series. This session was all about learning the basics of what primitives are in Java. In the next tutorial, we will be diving right back into program structure! As I mentioned in my previous tutorials, if people seem interested in this concept, I'll probably make videos to go along with my written tutorials as well! Also, if there is anything listed above that you would like a graphical representation of so you can visualize it better, please let me know and I will do my best to include it. If there is anything you don't understand, please let me know! If you didn't understand it, chances are someone else didn't either. Click Here For Tutorial #4!
  22. 16 points
    Repository Link Requirements Changelog Current Version: 1.13_04 Features: Ability to chain-quest in a specific order Start at -nearly- any point in the quest and it will finish Tracks how many times each specific quest has been completed Teletabbing to Varrock, Lumbridge, Falador, and Camelot Future Features: Teleport support TODO: Karamja Pathing Quests Supported: Complete-Needs Testing Black Knight's Fortress Cook's Assistant Doric's Quest Druidic Ritual Dwarf Cannon Gertrude's Cat Goblin Diplomacy Priest in Peril Prince Ali Rescue The Restless Ghost Romeo and Juliet Rune Mysteries Sheep Shearer Tutorial Island Vampire Slayer Witch's House Witch's Potion Future Quests: Demon Slayer Death Plateau Jungle Potion
  23. 15 points
    Welcome to Worthy Scripts |w| Zulrah Slayer Features Automatic Grand Exchange restocking! When out of supplies, the bot can sell loot, ready up, buy more, and continue! Using the resource tracker, the bot automatically calculates how many supplies it needs Essentially with enough GP you can run the bot forever! Automatic Muling! When the bot has enough wealth, mule over the extra GP and keep it safe! Works with the partner script: |w| Zulrah Muler Here is an example of 2.1B (pure profit) being collected from 33 accounts running for 54 hours: Loot tracker. Analyze your drops! This data along with other statistics are saved every run time by the Zulrah Sessions System. Resource tracker. Track every item the bot consumes while playing (and how much it cost!) This data is saved and used to compute exactly how many supplies are needed when doing the automatic Restocking With this tool your pure profit is displayed Resizeable mode compatible! This is one of the most human-like antibans any botting client can offer. Looking Glass compatible The script now functions smoothly with TRiBot's beta feature Looking Glass Unlimited multi-kill performance The bot will determine if it has enough supplies to start another Zulrah battle after killing the boss the previous time. It can continue doing this until it runs out of food, allowing a single, double, triple, or quad+ kill. Zulrah fight CPU efficient! Ability to run the client minimized. Dynamically prioritized combat framework Many Travel methods Zul-Andra teleport scrolls Charter Travel Camelot port [via Camelot teleports] Catherby port [via Catherby port lunar teleport] Khazard port [via Khazard port lunar teleport] Fairy Ring Network Fairy ring via Varrock Teleport Fairy ring via Quest Cape Fairy ring via Ardougne Cloak Fairy ring via Salve Graveyard Teleport Fairy ring via slayer ring Fairy ring via House Teleport (mounted) Ornate pool support If so, the script will use castle wars bank instead Jewelry box support If so, the script will use a custom kill / bank loop (with no Ring of Dueling) Or use another player's house! Ability to input a list of names. There is almost every customizeable option for every travel method. Please ask in the discord support server if you have questions There are also combinations of some of the above travel methods Reorganizes inventory! Drags and drops items like a real player Swaps between range and magic sets Or instead use magic gear only and use a custom positioning algorithm to hide behind pillars Option to skip the blue pattern which deals the most damage Repairs barrows armor Supports TRiBot breaking system Hiscores system (below) Dynamic signatures (below) Automatic screenshot progress report system every hour Detailed session log dump. Keep track of exactly how all your bots do! TRiBot Antiban Compliance V2 Level 10/10 The script is also packed with custom statistic-based antipattern I have personally developed Swaps gear and prays efficiently Smart options to determine when to use long range or keep level 1-def Tracks and handles JAD phases flawlessly Deathwalk - SAFE BOSS: never lose your items on death Recharges Trident of the Seas, Trident of the Swamp, Toxic Blowpipe, Serpentine Helm (all forms) Tracks ammunition and recharges special weapons Resizable mode options to optimize gameplay Supports serpentine helmets Supports cooked karambwans Supports special attacks Supports ring of suffering Supports prayer potions / super restores Supports stamina potions Supports summer pies for agility boost Supports imbued heart Supports custom world hopping Supports new rigour and augury prayers Supports vengeance spell with optimal timing Ability to use these with rune pouch Supports custom script ending conditions Supports multiple algorithms to fight Zulrah for click-related functions Supports custom f-key bindings Picks up and banks the Zulrah pet Official Discord Discussion http://discord.gg/yeCVsad External Documentation Thread A lot of the specific information about the features above is on the Documentation thread. It can be found by pressing the "READ ME" button on the GUI after the script is purchased. It will help you: Create an armor preset Decide what gear to wear Set up the GUI to be tailored to your RuneScape character Start the script correctly Other notable information Proggies More: http://imgur.com/a/HNaQZ Even more: http://imgur.com/a/lsh82 Requirements - 80 to 85+ range/magic (85+ magic necessary as it is the most important stat). If using LG, have at least 85 of both. - High defence and hp (>= 70 for barrows), HP recommend at least 75 - 43+ prayer - Regicide, Underground pass, Biohazard, and Plague City required Live Hiscores System V1 Hiscores (OLD) V2 Hiscores (CURRENT) Dynamic Signatures: Automatically load an image of your current stats, which updates as you bot! http://www.worthy.rs/tribot-php/ZulrahSlayerV2/sigs/USERNAME_HERE.png Just replace USERNAME_HERE with your TRiBot username (make sure it is all lowercase), and copy and paste it the image link itself into your signature here: (should be on the bottom right of your signature edit box). Pricing The Casual Botter - 14.99 CREDITS | 1 auth for 2 weeks - 24.99 CREDITS | 1 auth for 1 month Note you can buy multiple of the above as well Gold Farmer's Discount - 79.99 CREDITS | 5 auths for 1 month - 134.99 CREDITS | 10 auths for 1 month - 174.99 CREDITS | 15 auths for 1 month - 224.99 CREDITS | 25 auths for 1 month - 299.99 CREDITS | 50 auths for 1 month Note: the number of auths designates the number of RS accounts you can run on this script at a given time. Requirements Quests: Plague City, Biohazard, Underground Pass, and Recigide (up to the point where you can access Zulrah) Stats: 85+ range, 85+ magic recommended Click below to purchase or for FREE TWO HOUR TRIAL: Generic troubleshooting guide: Happy Botting! Worthy
  24. 15 points
    Post all bug reports / feedback please. For scenarios where the bot is stuck, the script stacktrace would help tons, thanks. Quests - Priest in Perl - Ernest The Chicken - The Restless Ghost - Animal Magnetism - Plague City Script can be found here.
  25. 15 points
    This script will be free and I will continue to update it, all I ask of you is that if you like it to "like" this post, and if you do not like it please tell me why and I'll try to make it better for you. Any and all constructive criticism is welcome and appreciated! Thanks, DIY Why use this script you might ask? Here is a list of reasons: Absolutely 0 requirements, You can load up two fresh level 3's and have them throw down if you really want.VERY few randoms, I've gotten one random on one of my accounts in going from 1-1-1 to 50-57-1 so far.Low ban rate? For now at least this is a very uncommon spot and just looks like two people dueling each other especially if you have auto-retaliate on the slave as well.Great XP. I am currently averaging 18k XP/HR with a 50-57-1 account and the slave using NO food. and over 30k XP/HR with that same account and a slave using only Salmon. (I'd love to see some proggies from someone with better stats and sharks!)I use it myself so it is updated frequently.What does the bot do? You must be running the script on two accounts, a "Master" and a "Slave": Slave- Grabs a full inventory of any specified type of food from bank, challenges the "Master" to a duel, accepts the duel, then stands with auto-retaliate off and eats while the "Master" attacks it. If you want you can also specify not to use any food and turn retaliate on to gain some XP on the slave account as well. Master- Accepts challenge request from "Slave" and attacks it until "Slave" is out of food and dies, meets "Slave" at bank if food is on, or at duel arena if food is off and repeats. Running the script: 1. Make sure you have the most updated version of KDuelTrainer! 2. Bring two accounts of your to the duel arena bank and log them in on the SAME world. Place your food in the TOP ROW of the bank. 3. Start the script which can be found in the "Duel Arena" section of your scripts page on both accounts. 4. Fill out the GUI as instructed before hitting start. 5. If you want to use food on the slave account select "Yes" for using food on BOTH accounts, on the SLAVE account enter the food id and healing amount. 6. Report any issues with the script here, and please post some progress reports of your XP/HR rates! Update Log: Version 1.01: Added in the option to not use any food by entering 0 for the food ID. And "N" for "Is the slave using food"Version 1.02: Fixed an issue with not properly closing the winning's screen when not using food.Version 1.03: Fixed an issue where if the two accounts spawned in the arena too far away they couldn't find each other.(Thanks lostaran for noticing) Version 1.04: Fixed a few more small issues, one where the "Claim winnings" screen was not being closed properly and an issue with walking. Also combined the two .class files into a single script that is to be run on both accounts. Also now displays XP/HR for the slave account (Leave auto-retaliate on if you want it to gain some XP also.)Version 1.05: Added the option to cast curse instead of fighting. If doing so try to get around -65 Magic attack on the master, and as high of magic defense on the slave as you can (Equip a magic amulet, staff, leather on the slave) for best results.Version 1.06: Added a GUI when you first start the script, script cannot be "re-run" now, must be started from the scripts menu every time for now.Version 1.07: New paint, slave now walks towards the middle of the arena once entered to avoid the problem of being out of range. Version 1.08: Re-written challenging method, Support for granite maul spec (Don't try other weapons yet haha it just spam clicks spec bar a few times at start of fight), Improved banking for food won't withdraw a full inventory twice anymore. To use granite maul spec support you must enter your other weapon's id in the "Main Weapon" box, the default is a rune scim because that is what I'm using, the id for granite maul is already in there. If you don't want to gmaul spec change that to a 0. Version 1.09: Huge improvement in simplicity, instead of having to input some odd chunk of your partners name you are now required instead to enter your partners entire username EXACTLY. (Finally figure out the issue with how the bot was returning Players.getName() )Version 1.10: Fixed an issue that was pointed out to me that the bot was trying to spec even when not using Granite Maul option, huge oversight on my part there sorry about that guys, also A NOTE TO PURES, I WOULD RECOMMEND AVOIDING GMAUL OPTION FOR A BIT, IT COULD MISS CLICK DEFENSE.Version 1.11: Should fix the issue where the script challenges other people standing on top of you, I haven't been able to test this myself yet so please let me know if there are any issues so I can fix it quickly!Version 1.12: Fixes an issue that was occasionally caused by spaces in usernames.Version 1.13: Should work again, let me know.Known Issues: Doesn't always handle logging back in properly. (May be working now) Things I'll add later (Probably free, possibly in a premium version): Potion support Prayer support Special Attack support Best Progress Reports: Thanks lostaran for the picture! Myself on a 40 Attack/40 Strength account using salmon. 90Dragon9000 on his level 10 account. Myself with 50-60-1 using salmon Wussup guys with 70 range, steel arrows, sharks If you like my scripts and want do donate to me feel free, Please don't feel like you need to though, all of my scripts are free and I write them because I enjoy it KDuelTrainer.class