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


Popular Content

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

  1. 62 points
    About a year ago, we launched our Reaction Timing and Other Playing Data project, where we asked our users to play RuneScape for a few hours while running a script which records their reaction times, actions, and other playing data. About 6 months ago, we started statistically analyzing the submitted data in hopes of releasing the most human-like anti-ban the botting scene has come across. Today, we are happy to announce that we've completed this task, and have made some discoveries which will dramatically improve our anti-ban. There are three main improvements we've implemented upon analyzing the submitted data: click point selection, reaction times, and typical human behavior. Click Point Selection The points which bots choose to click play a large role in whether bots look like a human, or a bot. A large problem many of our competitors have is that they use randomization for a lot of things, and think this will help disguise their bots. However, humans aren't random. We all follow similar patterns and trends. Let me show you what I mean. This is a picture of how a typical bot chooses to click inventory items, with standard randomization: This is the method used by a lot of our competitors. Because they use standard pseudo-randomization, every possible point which can be clicked has the same chance of being clicked as any other. This, in essence, is what is means to be random. From the human data we've collected, here is how humans actually choose which points to click: As you can see, there is a major difference between the two. Humans tend to aim for the center of the region they are clicking, and end up clicking a point which is near the center. The points are normally distributed around the center of the region. We know Jagex tracks mouse movements and the points which are clicked. So is it possible to determine if someone is a bot just by how they choose points to click? Totally. The difference between the two pictures is obvious. We originally noticed this difference many years ago, and I made an algorithm which I thought would be more human-like than the standard point selection. Here's the click points which it produces: It's slightly less bot-like compared to standard random point selection, but still far from human-like. It wasn't until I launched the data collection program and analyzed the submitted data that I was able to create a human-like point selection algorithm. Here's what our new algorithm produces: Compare this image to the image of the points which humans chose to click. The difference? There is no difference. I've made a point selection algorithm which accurately models how humans choose points to click. Let me juxtapose the two images: The left image is of the points clicked by humans. The right image is of the points clicked by TRiBot using our new algorithm. Is it possible to determine a bot was active just by looking at the points chosen to be clicked by our new algorithm? Not at all. This is just one area which has been improved because of our data collection project, and one less piece of evidence for Jagex that a bot has been running. Note that our algorithm isn't just for inventory items. It is applied throughout our API, and used for object clicking, NPC clicking, interface clicking, etc. I'd also like to point out that this algorithm was originally released during the summer, but I thought I'd include it in this post since it resulted from the data collection project. Reaction Times The step we've taken which is more dramatic than above involves reaction times. First, let me start off by saying how important having human-like reaction times is when it comes to evading bans. Problem number one is that bots typically have very low reaction times. Most humans aren't able to have these low reaction times, at least for very long. In turn, this increases the amount of XP and items gained while botting to very high levels; levels which aren't human-like. It's very much possible that Jagex examines the playing efficiency of players to determine if the player in question has used bots. They simply have to look for players with very high playing efficiency. The second problem is that reaction times produced by bots are typically evenly distributed between a minimum and a maximum reaction time. Jagex can catch on to this based on the delays between actions via their server, and determine whether a player is botting. Let me now divulge into both problems using the human data we've collected. Most, if not all of our competitors advise scripts to use random delays between actions. Does that sound like a reasonable way to evade Jagex's banning system? Instead of having a constant delay of 550 milliseconds between a pair of actions, having a random delay between 450 and 650 milliseconds between the pair of actions? The problem with that is once again, humans aren't random. Here is the delays resulting from having a random delay between 450 and 650: The delays are evenly distributed between the minimum and maximum, with a mean and median in the center of the min/max, and of about the same value: 550. Using the human data we've collected, here is how actual human reaction times are distributed: The human reaction times are right skewed, and obviously much different from the bot produced reaction times. How different are reaction times generated by bots vs. reaction times of humans? Very different. Is it possible to determine if a player is botting based on the reaction times? Absolutely. Just look at how different the above images are. From this discovery, I sought out to create an algorithm which generated reaction times like a human does. Here's what my reaction time algorithm produces, given the same input factors as the human reaction times: Using nine different factors, my algorithm has successfully re-built the human reaction time for all different click scenarios. If you compare the two histograms above, you'll notice the means and medians are about the same, and the spread of the data is about the same. If Jagex were to analyze the reaction times of a bot using my reaction time algorithm, they would be completely fooled. How is my algorithm so accurate? There are many factors which contribute to the actual reaction time of humans. Humans by definition aren't random. These factors all contribute to the probability of a certain reaction time. Though analyzing the submitted human reaction data, I have identified the nine most significant factors which contribute to the reaction time of a human. These nine factors are all taken into consideration of my algorithm to generate a pseudo-human reaction time. Let's juxtapose all three histograms: Which of the captured reaction times were produced by a human? Which of the captured reaction times were produced by a bot? The first set of reaction times was obviously produced by a bot. But you cannot tell that the third set of reaction times was produced by my algorithm because it closely models the reaction times of a human. RuneScape bots have existed for over a decade, but most of them all still have this problem. We seem to be one of the few botting platforms to have properly addressed this problem. Typical Human Behavior A problem which has been prominent with bots for over the past decade is "typical anti-ban." This is where script developers think checking XP randomly, rotating the camera randomly, opening the music tab randomly, etc. is effective anti-ban. This is not effective anti-ban for two reasons: Humans aren't random. Typical anti-ban is. A pattern will form with typical anti-ban, in that these random actions are performed every X seconds or minutes. Humans don't check their XP programmaticly every 5 minutes. Humans don't randomly rotate their camera every 3 minutes. Human behavior nowadays involves multi-tasking. Humans will often switch tabs to reddit, facebook, etc. Bots don't mimic this behavior. From the human data we've collected, we've discovered how to more accurately model human-behavior. One of the improvements we've made is that our bots will now make the mouse leave the game screen area, to simulate the player using reddit, facebook, etc. And no, we didn't just come up with an algorithm to arbitrarily or randomly decide on when to simulate this behavior. We statistically analyzed the human data to produce an algorithm which accurately models how a human behaves in this area. This is just one of the ways we've improved our bots in simulating human behavior, but is one of the more important aspects. A Note About Character Profiles In case you didn't already know, TRiBot uses character profiles to differentiate all of the RuneScape characters using our bots. A character profile is a unique set of attributes of how the character will play the game, which is generated for each different RuneScape character. Say you are botting on two different RuneScape characters: Mike and Molly. Mike and Molly will have two different, unique character profiles. This will change the way our bots play the game on each of the characters. Character profiles have been integrated with click point selection. Each different RuneScape player will have different ways of choosing points to click, and will still follow the human model. Character profiles have been integrated with reaction times. Each different RuneScape player will have different reaction times based on the factors which contribute to reaction times. Character profiles have been integrated with human behavior simulation. Each different RuneScape player will behave in different ways in terms of doing things other than the current task at hand. So not only did we create models and algorithms to accurately simulate human game play, we extended everything to be based off character profiles, so that no two bots are too much alike. Implementing the Algorithms So now you're wondering whether these algorithms are automatically implemented in every script, or if they have to be manually implemented by scripts. Well, our point selection algorithm was automatically implemented, to be used by every script. But reaction times and human behavior simulation have to be manually implemented by scripts. To allow scripters to implement these algorithms, we have created a new utility: Anti-Ban Compliance 2 (ABC2). The aim of ABC2 is to allow all scripts to implement a standardized anti-ban, backed by character profiles, and most importantly, human data. Read about implementing it here: https://tribot.org/forums/topic/60720-guide-to-implementing-abc2/ So far, the following scripts have implemented ABC2: Delta Cooker Delta Fisher Delta Miner Delta Woodcutter aAgility [Premium] A Note About Scripts Implementing ABC2 Upon running scripts with ABC2, you'll notice that they have lower XP rates than scripts which don't implement ABC2. Why is this? Because as I've said above, bots are a lot more efficient than humans. To accurately portray a human, bots must be of the same speed as humans. This is the cost of human-like anti-ban. If you don't want to get banned, your bot should behave like a human. If you aren't satisfied with human-like XP rates and resource collection rates, then feel free to use scripts which don't implement ABC2, but you can expect to be banned. Another thing to note is that sometimes ABC2 produces really high reaction times, up to a minute or longer. So if your bot seems to just be idling doing nothing, it's probably because of this. No, those high reaction times aren't a bug. It's how humans play. Humans don't have consistently low reaction times like bots do. Sometimes humans have very high reaction times, and that can be because of many different factors. ABC2 mimics this. Conclusion Thank-you for reading this post. I especially thank all of the people who contributed to the Reaction Timing and Other Playing Data project. We have come a long way in creating the most human-like bots because of the human data we've collected. I cannot stress enough how important statistically analyzing human game play is in creating human-like bots and anti-ban. This isn't it. We will continue collecting different human data for all areas of game play, and will continue making algorithms and models which simulate human behavior. I have a long list of areas which we will improve. TRiBot will always be the leader in human-like botting. By implementing anti-ban based on real human biometric data, we ensure our long term success in the fight against bot detection. Thanks, TRiLeZ, TRiBot Staff
  2. 52 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.
  3. 45 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.
  4. 44 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
  5. 39 points
    Start a livechat to order! https://YoHoGold.com Discord: YoHoJo#4756 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: 2.1M Each VIP - 6.5 Credits VIP-Extended - 8 Credits Start a livechat to order! Discord: YoHoJo#4756
  6. 38 points
    Hello community, Update: The detection patch has been released! TRiBot is once again safe to use, so feel free to continue botting. After some investigation into the RS client, I have noticed a new piece of code in the RS client which could potentially flag users of 3rd party clients as botters. So I did some more investigation/testing and found that Jagex does use this piece of code to ban accounts. I am 100% confident that this new detection method has led to the increase in bans. Further, all botting clients which have not already patched this detection method are affected. So please be cautious when using other botting clients, because if they haven't patched this detection method, you will be banned. But do not let this worry you about the future of botting. I am working diligently on a patch for this detection method, which should be released within the next few days. I advise everyone to stop using non-LG TRiBot until I release the patch, unless you don't care about your account. Once again, I also advise everyone to be cautious when using other botting clients, for the reason stated above. Due to the nature of Looking Glass (LG) and the nature of the detection, this detection method has limited to no effect on botters using LG. I haven't had any accounts get banned solely from using LG, but for the same reasons this detection method is capable of getting legit players banned, I am going to say that this detection method has a limited effect. This isn't the only [possible] detection method in the client. I usually silently release a patch for detection methods so that it takes Jagex some time to release that we know of the detection method. But since I am 100% confident this detection method leads to bans, and that many people have been hit by this, I am writing this to inform everyone on the situation. I'll keep everyone updated on the status of this patch. Thanks, TRiBot Staff
  7. 33 points
    Fluffee's Server Setup 3.0 As some of you may know, I released an automated server setup script a little over a year ago. Albeit that script worked well, I was never fully satisfied with it, as I found it to be kind of messy to use. As a result, I rewrote the script, and restructured it, to add more, and stronger support for the different versions of Debian, the different versions of CentOS and the different versions of Ubuntu. However, with so many different Operating Systems being supported, and many different server providers having different setups, it's hard for me to test every possible scenario on my own. Which is why I've been privately handing this script out, and am now publicly looking for help. What does the script do? Similar to my previous setup script, this script changes the SSH port and creates a new user for connecting and using the server and disables root SSH connections; it installs the latest version of TightVNC Server (1.3.10) and sets that up with the desired port and password. It installs JDK 102 (32 or 64 bit depending on the OS), and installs TRiBot and OSBuddy and sets up the appropriate .jar file associations. What operating systems does it support? - CentOS (6.x and 7.x) (32 and 64 bit) - Debian (7.x and 8.x) (32 and 64 bit) - Ubuntu (12.x, 14.x and 16.x) (32 and 64 bit) Does it work? As far as I know, yes it does in fact work, and it works well if I might add. However, given that I can't test every possible setup, there is the potential for differences and issues How do I run the script? Login as root to a fresh VPS/dedi running one of the supported operating systems. From there run the commands listed below and follow the onscreen instructions. For those who would like to see the script's code, it can be found on my bitbucket here. The commands to run are as follows: wget --no-check-cert https://bitbucket.org/teamfluffee/fluffees-server-setup/raw/add-shared-functions/fluffees-server-setup.sh && chmod +x fluffees-server-setup.sh && bash fluffees-server-setup.sh -v Version History
  8. 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!
  9. 28 points
    This update features: Fixed the combat API issues. Deprecated RSCharacter#getCombatCycle, RSCharacter#getHealth, RSCharacter#getMaxHealth because of the recent health bar changes. Added RSCharacter#getHealthPercent and RSCharacter#getHPBarCycle. I apologize for the long delay in getting this update released. To compensate for this delay, I am going to extend all current VIP users' VIP subscriptions by two weeks.
  10. 27 points
    The OSRS client had an overhaul of how the game canvas is displayed a few revisions ago. This caused some technical problems with TRiBot, primarily because our client is 100% reflection based and we can't use the simple "canvas hack" like injection bots can. This resulted in me having to redesign the system which renders TRiBot's game image and overlay painting. That is the reason for the delay in getting this update out. I thank everyone for their patience. Summary: Fixed the flicker bug Minor improvement in efficiency / CPU usage Fixed the "null source" bug
  11. 27 points
    This release features: New human-like clicking point selection algorithm (see below). Auto-RelogIf you start a script and select "Auto-Relog" as the account, TRiBot will automatically re-login to RuneScape when the login bot runs. You don't even need to enter your RuneScape account password into TRiBot. Lumbridge castle web walking bug fix. Added support for many more login messages. Fixed a GrandExchange API bug. Fixed the minimap walking bug where TRiBot clicks just slightly outside the clickable area. New Human-Like Clicking Point Selection Algorithm First, I'd like to thank all the users who contributed to the Reaction Timing project. In this first stage of analyzing the data, we have implemented our findings into the bot. Specifically, we have analyzed how humans select points they click within a boundary. Then we used our findings to create an algorithm which selects points to click within a boundary in a human-like fashion. Further, we have even added code to adjust the algorithm for every different RuneScape account (character profiles). This means that each different RuneScape account using TRiBot will click in a human-like fashion, but slightly different from other accounts using TRiBot. Here is an image of inventory clicks produced by humans (over 30 different people): And this is what our new algorithm based on real human data produces: Here's what the algorithm used by most of our competitors produces: The images speak for themselves. Our new algorithm is dead-on human-like. Why? Because it is backed by statistical analysis of real human data.
  12. 25 points
    pFisher Welcome to the pFisher, a simple and unique all in one fishing bot! Features Dynamic wait times before moving to next fish Mouse keys dropping Custom inventory listener Simple and clean exp dropper Experience / Yield tracker Beautiful and simple movable retro style paint Handfishing/Powerfishing support World Hopping support (supports F2P) Antiban calculator + odds & ABCL Supported Areas Al Kharid Barbarian Village Barbarian Outpost (Must have at least 15 agility / strength & started sub quest) Catherby Draynor Fishing Guild Karamja (F2P deposit box) Lumbridge Swamp Observatory (OP powerfishing) Rellekka (Must have Peer the Seer sub quest uncompleted in Fremennik Trials) Seers Village (North of bank) Note: Ported proggy from another bot Note: Ported proggy from another bot
  13. 25 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
  14. 24 points
    I started TRiBot 10 years ago as a project founded on my passion for gaming, software development, and automation. We have come a long way since then, especially myself personally. I’ve finished my BSc degree in computer science with a minor in mathematics. I’ve gained a massive amount of knowledge and experience in so many different areas. Now it’s time for TRiBot members to reap all of the benefits. Over the past few months, I’ve been working diligently on a new project - TRiBot X. Everything has been written from the ground up, with all of the best practices of software engineering. Every aspect of TRiBot has been re-imagined to support three main goals: flexibility, useability, and reliability. TRiBot X is more than just a RuneScape bot. It’s designed to be a very abstract automation platform. Modules and components are used to bring in specific functionality. But of course since we are a RuneScape bot, we are going to initially only be releasing an OSRS bot with this framework. That’s enough background information for now. Let’s dive into how TRiBot X is different from TRiBot. Secure Client Environment By secure, we mean that the RS client is run in an environment which heavily protects against client detection methods. With an in-depth knowledge of the JDK and JVM, I am confident that we are able to thwart any client detection methods, and we will continue to be able to do so in the future. This secure environment will be more secure than TRiBot’s LG. Sleek UI (User interface) and UX (User experience) UIs and UXs in web applications have vastly improved, but not so much with desktop applications. Therefore, we are writing TRiBot X’s display in HTML, CSS, and Javascript. We are using React with Material UI. Fast, Responsive, and Efficient Here’s the current resource usage with one OSRS client running at max FPS. Not bad right? Okay, now check this out. This is the current resource usage with 100 OSRS clients running at max FPS. Yes, you read that right. 100! This is with minimal optimization of TRiBot X. Here are the hardware specs of the machine used for bench-marking: TRiBot X has been elegantly designed for high concurrent performance. Open Source TRiBot X will be partially open source. Our pricing model will roughly stay the same though, delivered through proprietary software modules built on top of our framework. We can’t say which modules will be open source yet, but our plan is for most modules to be. The proprietary modules will all add great amounts of value, representing our competitive advantage. New Input Mechanisms We’ve redesigned our input mechanisms to precisely model human behavior, backed by data and analytics. Not just mouse mechanics, but keyboard mechanics too. And did I say, Human Mouse for everyone?! Scripting API TRiBot X’s new scripting API will be similar to our current API, but improved in many areas. We’ll provide both low-level and high-level APIs. It’s going to be more flexible, fast, and efficient. The main goal with its design is to minimize the amount of code needed to write scripts. Other features include: Null-safe No checked exceptions Immutable Other Features TRiBot X is going to redefine bot software. We have many different features planning, and I could go on and on about them. But it’s best that I work on them rather than talking about them. So here’s a list of what’s planned. I’m going to do more in-depth about them in a future dev blog, spoonfeeding everyone TRiBot X’s greatness. Theming support Plugin support Modularization Micro-service based architecture New web walker HTTP rest server for bot control Deep learning scripts Java 14, with a custom JVM FAQ When can we use it? We don't have a concrete timeline just yet, but we'll let everyone know as soon as we know. Development is moving at a rapid pace right now. What about TRiBot 10/11? TRiBot 11 will be seen through. After the official release of TRiBot X, TRiBot 10/11 will be given and end of life of 6 months thereafter. Will TRiBot 10/11 scripts be compatible with TRiBot X? For the most part, yes. We will offer modules for legacy support.
  15. 24 points
    Over the past 24 hours, I have been working on upgrading the servers. The servers have been too unstable lately, and I just had to do something to fix that. Our new servers use these Amazon Web Services: Amazon RDS (Aurora) for the databases5 times faster than a traditional MySQL server.Data is replicated on 2 nodes at 3 different data centres, thus providing 6 copies of the databases. If one copy goes down, AWS can easily use a different copy until the main copy goes back online.Automatic storage scaling. The databases can grow from 1GB to 1TB, and I won't even have to do a thing to maintain the storage space.Easy CPU/RAM scaling.Automated, seamless backups.Secure.Amazon EC2 for the apache serverUses high frequency Intel Xeon E5-2666 v3 (Haswell) processors optimized specifically for EC2. The server is fast!Easy CPU/RAM scaling.Reliable.Secure.Amazon EBS for data storageReliable.Secure.Consistent, low-latency performance.Seamless backups.Easy to scale.All in all, the new server is fast, reliable, secure, and easy to manage/scale. I know how important botting around the clock to everyone is, and I want to ensure that our users will be able to do so without worrying about server instability. On a final note, I'd like to thank you guys for putting up with the downtime recently. I am therefore giving an addition of 2 days of VIP/VIPE to all existing VIP/VIPE members. Enjoy using our blazing fast server! I know many of you have already noticed the performance increase.
  16. 22 points
    DAY 74/120 Main Goals Create 12 maxed accounts to farm corpreal beast farm corp beast with 12 maxed accounts (will use a mate, 6 accounts each) All Sigi's Drops (acrane, spectral & Elysian) Make 10,000$ from corp beast only Mini Goals Create 12 accounts & finish island Get 60 60 60 melee stats Get 90 90 90 melee stats Get 43 prayer Get 90 mage Get all NMZ quest stats (listed below) Complete all NMZ quests (listed below) Kill a corporeal beast Progress Day 5 Update Day 7 Update Day 15 Update Day 22 Update Day 27 update Day 31 Update Day 45 Update Day 50 Update Day 55 Update Day 59 Update Day 64 Update Day 72 Update Rewards Total progress table Timescale FAQ If you liked this thread click that like button below
  17. 21 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:
  18. 21 points
    a serious video message for @TRiLeZ TRileZ please come back, sunshine! TRileZ don't be so lazy! TRileZ hire more developers! TRileZ mod Butta! Behind the scene:
  19. 20 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 Want to help keep this script up to date? Encoded gladly accept OSRS gold and bond donations.
  20. 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 Combat Customizable looting Combat radius Saving your settings Custom API's for eating, prayer, equipment swapping, combat, monster selection, and pathing Premium features: All lite edition features full potion support full special attack support custom pathing support banking Guthans 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!
  21. 19 points
    This release features: Looking Glass fix. LG is not affected by the flickering issue like the regular client is. Performance improvements to the regular client which came about with the latest update to the RS client. Fix for the login bot where it wouldn't recognize an incorrect username or password has been entered. The regular client still suffers from the flickering issue. Fixing this is now my top priority.
  22. 19 points
    This update includes: Fix to destination hooks Updated world list in the world hopper Banking API bug fix Combat API bug fix Magic API bug fix Compensation for the downtime over the past few days as well as the downtime earlier this year is being applied to all current VIP(E) members and members whose VIP(E) expired during the downtime earlier this year. The extension is going to be one month. A new thread will be made announcing the compensation after it has been processed. Please keep all unrelated comments/questions off this thread.
  23. 18 points
    Einstein's Scripting Tutorial Part 1 - The Basics This tutorial was written specifically for the users that are interested in learning how to code their own scripts, but lack any kind of technical knowledge. After reading this tutorial, you will understand the basics and have a good starting point in this journey. There are plenty of concepts that you will need to learn and understand, but you shouldn't get discouraged by the complexity, as everything will get easier with time, if you put in enough effort. Let's get started! What exactly is a script? According to Wikipedia, scripts are: "programs written for a special run-time environment that automate the execution of tasks that could alternatively be executed one-by-one by a human operator". Sounds familiar? In our case, the special run-time environment is the TRiBot client. Scripts written for TRiBot will only work within it. You cannot run a script by double clicking the files on your desktop. You need to start a TRiBot instance, offer it a script, and then the client will execute it line by line. A script is basically just a set of instructions: go to the bank kill a goblin move the camera chop down a tree You can add rules and conditions to determine if and when to execute the instructions: if the inventory is full: go to the bank if my player is not in combat: click the next goblin while the player is busy cutting the tree: idle - do nothing if the player reached level 40 fishing, switch from trout/salmon to lobsters The Beginner Pitfall So far so good, everything is clear: just some basic instructions for your bots. The problem is that TRiBot won't be able to execute anything written in plain English. We write scripts in a programming language called Java. After writing the Java source code, we use a program called a "compiler" to convert the source code into executable "bytecode", and we end up with a working script that can be executed by the client. If you don't have any programming experience, a lot of things (probably everything) will seem utterly incomprehensible at first. Don't get discouraged or frustrated if you don't understand it from the first attempt. Everyone without exception, even the most brilliant of programmers, have started at the same point in which you are today: absolute beginner. By deliberate practice, you will gradually become better at it. Real Life Script Here is a real-life script that you probably ran today, without even realizing it: The comments (green) are not executed, they just explain the code, I included them just to make matters more clear. ("!" - means "NOT" ) TRiBot Script Setting up a new script: 1. Download any Java IDE if you haven't already. An IDE is a code editor that will make scripting easier. You can find a free IDE by searching online. In this tutorial, we will be using Eclipse. 2. Create new project, this will be your script. You can name it as you wish. 3. Go to Java Built Path (depends on IDE) > add external JAR > navigate to .tribot\dependancies > add "TRiBot.jar" 4. Create a new package called scripts (lowercase 's'). It's very important to name the package as such. 5. Create a new class, this can also be named as you wish (by convention it starts with uppercase). If your setup looks like this, then you are ready to move on. The actual coding: The first step is to extend the class 'Script': This will generate two different errors. 1. You need to import the abstract class Script. Just use the IDE's auto import shortcut (Eclipse: Ctrl + Shift + O). 2. You need to implement the method run from the Script class. Either click the error warning and select "Add unimplemented methods", or write the code yourself as it's shown below (run method): The run method will be called automatically when you press in the TRiBot client. The instructions contained within the run() method will be executed in sequence, from top to bottom (Blue Arrow). If all the instructions are executed, the script will stop. In order to prevent this from happening, we will write all the instructions inside an infinite loop: When control flow reaches the end of the loop, instead of exiting the method, it will return back to the top, executing the instructions again (Red Arrow). Running the script Your IDE will automatically compile the .java files into .class files. Navigate to your workspace (the location of your project) and copy the .class files. Paste them in C:\Users\UserName\AppData\Roaming\.tribot\bin\scripts. If you packaged the script correctly, it will appear in the script list when you press . VIP is required to run local scripts. Code example Here is a very simple script that first checks whether or not the inventory is full, and decides what to do next based on this information. If the inventory is full, the script will walk to the nearest bank and deposit everything. Otherwise if the inventory is not full, the script will walk to the potato field and will pick potatoes continuously until the inventory will be full: Null Pointer Exception / Array Index Out of Bounds Exception Two of the most common bugs that new scripters encounter are the Null Pointer Exception and the Array Index Out of Bounds Exception. It's very easy to avoid them if you understand them correctly. They both refer to the same idea: You cannot perform actions upon something that doesn't exist. Null Pointer Exception Consider the following table. Let's try to eat the apple that's on the table and see what happens. // Declare a variable of type Apple, named 'apple'. Apple apple; // Search the table for the nearest apple: // Assign the variable 'apple' with the value returned by the method 'getNearestApple()' apple = table.getNearestApple(); // Attempt to eat the apple stored in the 'apple' variable apple.eat(); Line 2: Since there is no apple on the table, the method getNearestApple(), will assign the value null (nothing) to the 'apple' variable. Line 3: Since the variable apple points to nothing, attempting to perform an action upon it (eat the apple) will throw a Null Pointer Exception. How to prevent a null pointer exception on line 3: if (apple == null) print("The apple variable is null, let's leave it alone."); else apple.eat(); Array Index Out of Bounds Exception We have an array of 4 apples. Let's try to eat the 5th apple and see what happens. apples[4].eat(); Since the array only contains 4 elements (indexes 0 to 3), attempting to perform an action on the 5th element (index 4) will throw an Array Out of Bounds Exception. How to prevent this from happening: if (apples.length < 5) print("The array's length is less than 5. We are unable to access the 5th element. (index 4)"); else apples[4].eat(); The end I strongly advise you to learn Java before getting into scripting. Here are some useful links: My introductory guide to this programming language: https://tribot.org/forums/topic/75158-introduction-to-java/ The Oracle tutorials, one of the best resources available online for free: https://docs.oracle.com/javase/tutorial/ Here is the link for the TRiBot API, which is one of the most valuable scripting tools, so make sure to bookmark it: https://tribot.org/doc/ Thank you for reading my first scripting tutorial. I hope that you've learned something from it, and that you're one step closer to writing your own scripts. And remember: you will only get better at this by deliberate practice. It's hard, but not impossible.
  24. 18 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
  25. 18 points
    Please give a warm welcome to our new administrator, @Fluffee . He is our new and official customer support lead. Over the past 6 months, Fluffee has done an excellent job with helping customers and answering all FreshDesk tickets in a professional and timely manner. With this new position, Fluffee will be better able to help all of our loyal customers.
  26. 18 points
    Fixed clicking/uptext/choose option bugs Fixed minimap clicking bug Updated the world hopper
  27. 18 points
    As you all know, TRiBot has been down for the past few days, which I deeply apologize for. On Thursday I was performing maintenance on the server to increase its throughput, storage capacity, stability, and speed. The first road block which I hit - a minor problem with swapping the server's drive - led to having to temporarily route traffic away from TRiBot while I fixed the issue. This was only supposed to take less than an hour to fix. In the meantime I had to unfortunately deal with some home network downtime causing me to re-locate and work from elsewhere. On top of this, I had to factory reset my phone causing me to lose two factor authentication (2FA) info for many sites. While I was able to quickly recover access to most of the accounts which were protected by 2FA, some of them required a more lengthy process which is where most of the downtime occurred. I've already ordered a dedicated hardware 2FA device to prevent the situation of being locked out again. I'm also working on implementing an auto-scaling, distributed computing network so that if one cluster server goes down, there will be others to take its place. This will be phased in within the next month. Once again, the staff at TRiBot deeply apologizes for the downtime. To compensate, we will be extending all VIP/E and script subscriptions by 7 days. Sincerely, The TRiBot Staff
  28. 18 points
    Changes include: The non-LG client automatically added 5 miliseconds of paint delay on top of the user specified paint delay. This has been removed. Any paint delay of less than 5 milliseconds was "corrected" behind the scenes to 5 milliseconds. This "correction" has been removed. Before, setting your paint delay to 0ms would make the client sleep the mandatory 5ms, and a 5ms "corrected" paint delay. Now, the client will sleep for 0ms instead of 10ms in this case. Before, clients which were minimized or not in focus because of another tab were made to have a minimum of 35ms paint delay plus that 5ms mandatory delay for non-LG clients. This has been removed. If you notice an increase in CPU usage when using multiple tabs, this may be why. Consider increasing your paint delay. Client painting is a lot more smooth now because much less calculations and small sleeps are performed each game frame. CPU usage is lower for LG, and especially for non-LG. I couldn't re-produce the typing bug with LG and OSBuddy, but I made some changes which might make a difference.
  29. 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 script Begging script Spam trading script Dancing for money script Script that follows random players
  30. 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 reply I receive report, look over it and find out I have insufficient information. I tell you to post more information and wait for you to reply You post more information and I will need to look over it again This 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.
  31. 17 points
    This release will: Fix key event handling issue Fix other event handling issue Fix RSServer hook Update world hopper to have it use OCR, thanks to Todd Use proper disposal of old Graphics objects Reformat code Rearrange code Organize code imports Apply around 8000 automated code refactorings Make preparations for Java 9 Fix 11 various bugs Add more reliable debugging support Fix mouseEntered/Exited event dispatching bug Fix minimap walking bug where it opens the map Fix broken hooks for today's game update Fixed https://gitlab.com/trilez-software/tribot/TRiBot-Issues/issues/10
  32. 17 points
    This release contains: Fixed the login bot for the Lava screen. Thanks go to Todd. Added some additional cases for the login bot's message handling system. Small improvement tot he World Hopper thanks to Todd. Looking Glass has nearly been fixed, but we're still working on perfecting the fix to prevent potential problems experienced by users. A fix to the flickering issue will be released shortly after.
  33. 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.
  34. 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.
  35. 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!
  36. 17 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!
  37. 16 points
    Source over at GitHub Example: Debug Paint: Api-Access How to use Api-Key WebWalkerServerApi.getInstance().setDaxCredentialsProvider(new DaxCredentialsProvider() { @Override public DaxCredentials getDaxCredentials() { return new DaxCredentials("API-KEY", "SECRET-KEY"); } }); Map Preview
  38. 16 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.
  39. 16 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.
  40. 16 points
    Try our development release by checking "Development Release" on the TRiBot Loader. Note that these new features are currently in beta. This release features: Re-sizable mode support for both LG and the regular client Slightly improved login bot Removed final access modifiers from API classes Added RSServer hook wrapper to get the client's cached list of server/world info [NEW] Bug fix for intelligent banking [NEW] Improvement to the stability of LG over time [NEW] Vastly improved the reliability and speed of Screen#getColorAt on both LG and the regular client [NEW] Fix LG login problems [NEW] Fixed re-sizable mode container bug [NEW] Fixed re-sizable mode mouse bug [NEW] Use of public constants in the Banking API [NEW] Use of other various constants such as Projection#NULL_PT and Screen#EMPTY_COLOR More features to come very soon! Please test it and let us know here if there are any new bugs introduced in this release.
  41. 16 points
    Brief overview of what @TRiLeZ said over at the tribot discord chat. There might be an announcement later, but expect a fix to broken hooks soon.
  42. 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
  43. 16 points
  44. 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
  45. 16 points
    After over a year of service to TRiBot, it's my time to say farewell. I would like to thank everyone (customers, friends, etc) who have made my stay here quite enjoyable. I can honestly say that this has been quite the learning experience, and an honor to get to know you guys. I don't leave with any regrets-- my wife and I are expecting our first baby to be born in August, and I've been offered a great paying job across the state. I don't expect much time at all for extraneous activities. This being said, I leave my customers in good hands: As co-owner, Zainy will take over Ultimate Pest Control, Ultimate Metal Dragon Killer, and Ultimate Green Dragons. With even more experience at TRiBot than I, Zainy is fully equipped and able to take over. For my NMZ customers, Erickho will be the new owner. Erick has already had a hand in the NMZ script, from early on. I'm not much on speeches, especially since my computer restarted after I already wrote one out. TRiBot, you have offered me a year of friendship and learning, headaches and all-nighters. I'm forever grateful for the time I could spend here. Farewell friends, you will be missed.
  46. 15 points
    Fluffee's Tutorial Island v4 TRiBot's best Tutorial Island Script • Completes Tutorial Island • Supports loading of bulk accounts • Script Argument/Queue/Client Starter support • Tons of customization options • Random account profiling • Full ABC2 support • Post tutorial island tasks • Account Creation • Task based, chose the options for every account • Resizable mode support Get it here! GUI Script Arguments Script arguments must be entered as follows (with the following keys): settingsFile:saved_settings_file_name.json; The only argument required now is the name of the settings file to load. If the file specified does not exist, an error will be printed in the debug, and the script will show the GUI instead. Source
  47. 15 points
    Guide to Significantly Reducing Bans & Successfully botting your Main By: Mark Introduction: I've had major success botting a main with tribot, and felt obligated to help out the rest of the tribot community interested in creating and botting their main account successfully, as well as significantly reducing the chances of bans. I have applied 100% of the tips I will be providing in this guide to my own personal accounts. My Story: Since April 2013 I have been botting with tribot, and achieved massive success on my previous accounts. Obviously at this time ban rates were almost non existent, and bot watch was a joke. I maxed out melee with horrible botting habits, something that is impossible to do now. In late 2014 I was permanently banned for macroing major. I quit the game for a while and didn't know of the recent hiring of Mod Weath and upgraded bot watch system. I took a huge hit, quit for about a year. Fast forward to December 2015, I create a new account, and start botting. My ultimate goal was to max out melee, get 94 magic, and pretty much all my previous stats. I purchase VIP-E, use looking glass, and try out USA's combat script. With this I get to 70/70/70, and quickly move on to Nightmare zone using Erick's ExNMZ script. From 70/70/70 got to 70/99/70 in a matter of 12 days. I got too cocky, and started botting insane hours (9 hours straight of script running time, etc) and eventually get a 2 day ban. 3 days after I get unbanned, I proceed to botting again, only this time, with much better botting habits. I eventually reach 99/99/99 and achieve max melee. Right after, I proceed to get 94 magic with Starfox's SigmaMagic, and get it pretty quickly, along with 60 magic and 60 agility. Since then I have stopped botting, and I sleep well at night knowing I got through the extremely efficient bot watch system. The GUIDE: Before I get started with the guide, I would like to say that good botting habits will forever be the most important aspect in avoiding bans. General Requirements: 1. VIP-Extended If you want to successfully bot your main, you cannot be cheap. VIP-Extended is $8 a month, and it gives you access to Looking Glass & human mouse data. Both I believe are helpful in reducing ban rates. Looking glass makes client detection by Jagex pretty much impossible, while human mouse data is a very nice bonus. 2. Looking Glass I used it, and you should too. People may argue that jagex do not detect clients, but look at it from a logical stand point. If jagex wanted to eradicate botting, WHY WOULDN'T THEY look for clients? Looking glass allows your account to be logged in on a legal client (like osbuddy) while the script runs on the tribot client. At the same time, being consistent with client usage will minimize the chances of you possibly getting flagged, which could happen when you are constantly changing clients whenever you're botting and playing legit. I'd like to note that the tribot client was once detectable (back in November I believe, Trilez made a post admitting to this), but it has since been patched. It is possible that jagex could be able to detect clients again, therefore it would be in your best interest to just stick with the looking glass and remain safe. 3. A little bit of discipline and common sense This one is pretty much self explanatory. You'll notice that as you progress botting your runescape account, your confidence in the script and/or the client may increase. This could lead to you increasing your botting hours and reducing your breaks, which is a horrible idea. DO NOT push your luck. The tips I'll give you in this guide will be enough for you to make it far with botting your account, just be patient. The Essential Botting habits: Listed in no specific order. 1. Do not bot during Jagex working hours, or at least be very cautious when you do. Bot watch exists, and is there to flag accounts. When you bot during jagex hours, not only are you running the risk of being detected by the bot watch, but you also run the risk of being manually banned by mod weath. If you want to avoid bans, it would be in your best interest to avoid the possibility of a manual ban, therefore do not bot during jagex working hours. 2. Do not bot more than 8-10 hours a day total. 8-10 hours may even be pushing it. Most normal human beings do not spend more than 8-10 hours everyday playing runescape. The entire aspect of botting smart revolves around being as least suspicious as possible, therefore do not go overboard. \ 3. Do not bot more than 2-3 hours straight. Now, we get into specifics. Besides not botting more than 8-10 hours a day in total, do not bot more than 2-3 hours straight. Keep your botting sessions as human-like as possible, depending on the activity. Only a handful of people in this world can go multiple hours straight training their skills at max efficiency. Depending on your skill botted, your maximum session may vary. Most people can fletch for 2-3 hours straight, but no one can runecraft for 2-3 hours straight at max efficiency. Again, use your brain, and don't go overboard with your sessions. Personally, I did nightmare zone for 2.5-3 hours at a time. I also stun-alched for 2 hours sessions, but did agility for 30-1 hour sessions and mining for 30-1 hour sessions MAX. 4. Take breaks. In between your sessions, try to take manual breaks. Say you do 2-3 hours of Nightmare zone training, log off right after for about 30 mins to an hour, possibly longer. Try to be fairly random with this, just like a normal person would. Someone who does 2-3 hours of NMZ may eat dinner, which sometimes takes 30-45 mins. Sometimes he brushes his teeth or does something else after, taking another 15 minutes. Again, try to mimic normal human behavior and breaking habits. As for the break handler, I personally did not use this. I feel that fully randomizing your breaks only makes you look more bot-like, and always stuck to manual breaks. If I was in school, I would use teamviewer to manually stop my script, or if I was at home, I would just stop it myself. Be creative, and be smart. 5. Switch things up and play legit during breaks. I've said this many times before, you need to be as human-like as possible. People do not do the same activity for hours on end, day after day, week after week. If you have a long term goal like I did, switch things up. After 2-3 hours of nightmare zone, take a 30-1 hour break, then do a little bit of fletching, questing, whatever. Make yourself seem like you are a normal player, and not some bot who does the same thing over and over. I believe this was one of the MOST EFFECTIVE botting habits that kept me from getting banned. 6. Invest in premium scripts and stay away from free ones. This is not to take away from the free scripts we have on tribot. Don't get me wrong, we have some pretty good free scripts, but they're simply not as good as the premium ones. If you really care about your account, INVEST in premium scripts. Premium scripts are tested extensively, have better anti-ban, and are less likely to have bugs. The entire goal is longevity of your account, therefore it would make sense to use the best script for a certain activity. 7. Choose ABC2 over ABCL1 scripts, although ABCL1 scripts do fine as well. Mentioned this many times before, you want to be as safe as possible, therefore use the most human-like anti-ban. Trilez and the rest of the devs have done a good job with ABC2, and I believe that it is very useful in avoiding bans. Less randomization, more human-like, and overall just more tailored to your own habits. Although majority of my success came from a script which did not use ABCL2, I believe that this anti-ban system would of made the script a bit more safe. 8. Take some days off. Normal people do not play runescape every.single.day. Take days off botting. Go days where all you do is play legit doing quests, chatting with friends in the GE, etc etc. Be as human like as possible. I usually did this once a week or so, to avoid suspicion. Although this is not a requirement, its always better to be on the safe side. 9. Do not bot heavily goldfarmed methods. Things like Woodcutting, yews, fishing sharks, spinning bowstring, crafting natures etc. are all very risky. Bot watch obviously has a keen eye for these, as they affect the game the most. Mod weath also manually bans in these places the most, making it that much more risky. If you're gonna bot a skill like woodcutting, do so with a method that does not make money, like willows. If you're gonna fish, do salmon and trout. Conclusion: This is pretty much all I have for now. Everything was done on the top of my head, and these are all the habits I implemented. If I forgot something, I will edit this thread to add what I've left out. To be successful, you have to be smart. Try to keep things as human-like as possible, and never go overboard and push the limit. If you guys have any questions, feel free to post below or send me a private message. Good luck!
  48. 15 points
    This release features performance increases (lower CPU usage, lower memory usage, faster), mainly for LG. Most notably, interface information transferring has been sped up by around 100% in some cases. Note that these performance increases for LG are more noticeable if you're botting through OSBuddy or the downloadable client, and less so with the web client. Non-LG clients also receive a small performance increase.
  49. 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.
  50. 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
  • Create New...