Jump to content


Popular Content

Showing most liked content since 05/18/2013 in all areas

  1. 60 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 CookerDelta FisherDelta MinerDelta WoodcutteraAgility [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. 51 points
    Let's make a tutorial on how to not get banned. Age of Account Holder Jagex has stated in their youtube videos/live streams that they look at the age of the account holder to determine how many hours a human of said age would likely to be playing the game. A person below 18 years old is likely to be in school between 8am and 3am. A person between 18 and 22 might be in university/college for many hours each day. On top of school hours, students have to spend their hours doing homework. Jagex knows this fact, and looks at the age of account holders and how often the account is played on. Botting many over weekdays may sway Jagex to think you are a botter if you give them a young age.If the age of the account holder (given to Jagex at account registration) is an age which a person is likely to be in school, do not bot during school hours, and limit the amount of hours botted during weekdays. I'd recommend giving Jagex an age of between 24 and 40 to lessen the chance of Jagex suspecting you of botting.Character Clothes Don't use the default character clothes upon creating your account. Make sure to switch the clothes up. Other players are more likely to report you for being a bot because you look like a common bot.Level 3s Please level up your combat level to at least 10. Level 3 accounts are usually bots. Players are likely to suspect you are botting if your account is level 3, and they will report you.Avoid Botting Long Hours As stated by Jagex, most legitimate players don't play for long hours. Don't bot more than 8-10 hours a day, unless you don't care about your account.Use Breaks Most humans don't have the attention span to play hours without a break. Use TRiBot's break handler, giving your account a break every once in a while.Switch Up Activities Don't bot the same skill/activity every day. Switch up the scripts you use. Try using a woodcutting script for a few hours one day, then switch to a mining script for the remaining hours of the day. The next day, maybe try using a mining script again, then go and use a combat script. Most real players don't do the same skill/activity for days on end. Switch it up.Avoid Changes in Playing Patterns If your account is used solely for botting, and not for playing, then don't play on your account. You personally will have a different playing pattern than TRiBot. Jagex might look at this difference in playing patterns, and could bring upon suspicion that your account is a bot.Try using scripts from the same author. Individual script writers usually have specific ways of handling actions. Scripts by different authors might display different playing patterns.Make sure the same mouse speed is being used in all of the scripts you use.Avoid Scripts with Bugs Scripts with bugs in them can cause your account to be trapped in an endless loop of doing something which looks bot-like. Example: If the account gets stuck outside of the Lumbridge chicken coop and it tries to attack chickens which are in the coop for hours, it will look like a bot. It will keep trying to kill the chickens even though it can't reach it. A human would be smart enough to know to open the coop door to fight the chickens.If the script you are running wasn't developed by an established script writer, then baby-sit your bot to ensure that the script doesn't have any bugs in it. If it does have bugs, you can either use a different script, or baby-sit the bot at all times when running the script.Use Scripts with a High ABCL TRiBot generates unique characteristics for every different botter. These characteristics will hold data such as if the botter should hover the next object/npc, if the botter should go to the next anticipated object/npc location if waiting for an object/npc to spawn, wait times for switching objects/npcs, how often to check XP, and more! By assigning unique characteristics for every different botter, TRiBot will be able to make your character seem different from all of the other botters, thus making it more human-like.If the script has a high ABCL (such as 8-10), then the script implements most, if not all of the unique characteristics available to the bot. Without these More info about ABC/ABCL here:https://tribot.org/forums/topic/31289-anti-ban-compliance/https://tribot.org/forums/topic/31289-anti-ban-compliance/?p=385153https://tribot.org/forums/topic/31969-guide-to-implementing-anti-ban-compliance/Avoid Botting in Areas Filled With Other Bots Try to bot where no other bots are. For one, Jagex calculates playing pattern heuristics. They will compare the heuristics of each player to the other players in the area. If a group of players in the same area all have the same heuristics, Jagex will conclude they are all bots and ban them all. Note: This is what ABC/ABCL was made to combat. ABC/ABCL assigns unique characteristics to every different bot, thus giving them different playing pattern heuristics, which combats Jagex's bot finding methods.Another reason why you should avoid botting in areas filled with other bots is that players are likely to notice a ton of bots, get angered, and report them all. A Note about Bans Delayed Bans Jagex uses delayed bans as a method to prevent script/bot makers from discovering just what is causing their bot to get banned. These delays in bans can be anywhere from a one day delay, to a six month delay.That being said, do not blame the last script or bot you used. Your ban was likely to be caused by a script/bot you used a while ago.Ban Upon Login Sometimes instead of banning an account straight away for botting, Jagex will issue a ban which won't activate until you login to the client. With that being said, don't blame the bot client and say it is detectable. Your ban has been waiting for you, and it just wasn't issued to you until you logged in.IP Flagging If your account gets banned for botting, Jagex will likely flag your IP, and will monitor the accounts which are linked to that IP. If you get banned, try to reset your IP and create a new account on that new IP.Some proxy/corporate IPs are also flagged, so watch out.Avoiding IP Flagging Some users like to avoid IP flagging by using proxies, but many of them still link their account to their main IP.If you are using a proxy to avoid IP flagging, you must create the account while using the proxy. If you create the account with your main IP, but only bot using a proxy, your main IP is still under threat. If you create 10 accounts using your main IP, but bot on them using 10 different proxies, a ban one one account could lead to a ban on the 9 other accounts because they are all linked by the account creation IP.If you are using a proxy, you should also never login to the RuneScape website (or client) using your main IP. If you do, your account will be associated with your main IP.Accounts Which You Don't Even Bot on are Under the Flame As stated by Jagex, if you are caught botting on one account, all of your other accounts may be banned for botting. It doesn't matter whether your other accounts were actually botted on. Be careful.A Note about "Client Detection" Some users claim TRiBot is detectable. However, they are wrong. Users have to keep in mind that I can read the client's code, and I do. With every RuneScape update, I check the client's code for any method which can be used to detect botting clients. So far, no code is being used to detect/search for TRiBot.
  3. 48 points
    ExMerch v1 by Erickho123 The script is free forever. Feel free to donate or overbuy my gold to feed duh famry. Anti lure if walked too far away, it'll walk back to your starting position Anti scam if trade values are different, then it will decline Multiple Item buying Buy multple items at once, even in the same trade window or one by one. Seperate your item ids with a comma Example:Item id: 432,546,443,561 Seperate your item prices corersponding with the item id with a comma. Example: 1000,3000,495,270 Low CPU Doesn't use much cpu, it's a merchant script. Anti scam Fast at recognizing trades, trading, and inputting values along with the fastest typing method. Automatic name grabbing Tired of those merchers that asks you type in the item name? Well this purely uses IDS and still has anti scam Saving / Loading settings loads / save specific profiles so easier to use Download Click here to view it in the repo. (cloudnine) The script is free forever, Get into lite mode.
  4. 45 points
    Hello community, I have started working on a new project aimed at making TRiBot's mouse movements as human-like as possible. To do this, I plan to implement real mouse movement data, replacing TRiBot's pseudo mouse movements. Real mouse movement data will be generated by users, clicking strategically placed circles, all with different sizes. The data recorded will be movement locations and timings. After enough data is collected, I will work on analyzing the data and implementing it in the client. That's right, TRiBot's mouse will use real, human mouse movements. We will be able to further throw off Jagex's detection systems, especially because Fitt's Law will be used along with the human mouse movements. We are currently in the data collection stage, where I need the community's help. The details for providing help are listed below. What will you be doing? You will need to run a certain script. The objective will be to click ~628 red circles, which will take approx. eight minutes. After finishing, a file will be generated. You must upload the file in an attachment in a post in this thread.When should this be done? The sooner the better.Will you receive compensation? After you submit the required amount of files, you'll be given access to bot using the Human-Based Mouse (with your collected data). This will make all of your bots seem more human-like.How many data files are needed per user? I need between 20 and 22 data files per user. The higher, the more human-like the mouse will be. Instructions: Open TRiBot's Mouse Data Collector tool via "File > Mouse Data Collector" Read/do: You will be clicking the solid red circles, one after another. Your goal is to click each circle quickly, and to only click once per circle (try not to misclick). Your clicks need to be as accurate as possible. If you can, set your mouse's reporting rate to the maximum. Set the client delay to the lowest. Do all of the clicks on one sitting. Do not do anything else other than clicking those circles for all of the ~628 circles. This will take approx. eight minutes. Post all of the data files under a single TRiBot account. If you use multiple TRiBot accounts to post the data, your data will be ignored. Do not post the same data files twice. I can tell if you do so. After clicking all of the circles, a file will be created, and the location will be stated in the debug box. Upload that file to a post in this thread.The system to integrate human mouse movements is complete. All we need now is mouse data. Thank-you, TRiLeZ
  5. 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
  6. 32 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!
  7. 29 points
    RUN WITH CLIENT IN LITE MODE (FILE -> SETTINGS -> LITE MODE)! Masks become available at 01:00, 17/06, BST. To convert this to your time, use this: http://www.timeanddate.com/worldclock/converter.html What it does: Logs in, checks if a scythe OR a PUMPKIN is near by.If not, switches world.Will stop once scythe (not for pumpkins, will carry on) appears in inventory.WILL SAY LOCATION OF RARE IN CLIENT TRAY IF NOT ON SCREEN.Will teleport using VARROCK or HOUSE tabs if below HP set in the GUI. FAQ: Received: Masks: Pumpkins: Scythes: DOWNLOAD: BELOW - USE 1.70 FOR SANTA HATS!Rare Hunter v1.10.zip Rare Hunter v1.20.zip Rare Hunter v1.30.zip Rare Hunter v1.40.zip Rare Hunter v1.50.zip Rare Hunter v1.51.zip Rare Hunter v1.52.zip Rare Hunter v1.55.zip Rare Hunter v1.60.zip Rare Hunter v1.61.zip Rare Hunter v1.65.zip Rare Hunter v1.70.zip
  8. 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.
  9. 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
  10. 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.
  11. 25 points
    pFisher Welcome to the pFisher, a simple and unique all in one fishing bot! Features Dynamic wait times before moving to next fishMouse keys droppingCustom inventory listenerSimple and clean exp dropperExperience / Yield trackerBeautiful and simple movable retro style paintHandfishing/Powerfishing supportWorld Hopping support (supports F2P)Antiban calculator + odds & ABCLSupported Areas Al KharidBarbarian VillageBarbarian Outpost (Must have at least 15 agility / strength & started sub quest)CatherbyDraynorFishing GuildKaramja (F2P deposit box)Lumbridge SwampObservatory (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
  12. 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.
  13. 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
  14. 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:
  15. 20 points
    TRiLeZ's Scripting Tutorial The purpose of this tutorial is to teach the basics of coding for TRiBot. This tutorial assumes you have basic/some knowledge of Java. If you don't, try learning a little bit of Java before reading this tutorial. Even though this tutorial is mostly just covering the basics, intermediate scripters may find this tutorial useful. So please intermediates, read this. Sections 5, 6, and 7 are most valuable to intermediates, but the other sections might help too. 1. Requirements Java JDK Eclipse (Standard) 2. Setting Up Eclipse Find a tutorial elsewhere to do this, if Eclipse isn't set up. 3. Resources API Documentation Java 7 Documentation 4. Writing the Script: Getting Started Time to jump into the script. Before reading below, you need to understand the following: If I use an API method which you aren't familiar with, look for it in the API documentation, and read all of the comments about the method. The documentation is your friend. Create a new class name. Make the class extend Script (you'll have to import org.tribot.script.Script). Now, implement the abstract methods of Script into your script class. See the API for which methods to implement. package scripts; import org.tribot.script.Script; public class TutorialScript extends Script { @Override public void run() { } } When the script is executed, the run() method will be called. When the thread exits the run() method, the script will stop. Therefore, we will need to have a loop to make sure we don't leave the run method until we want the script to stop. package scripts; import org.tribot.script.Script; public class TutorialScript extends Script { @Override public void run() { while (true) { sleep(10); } } } You'll notice that I added "sleep(10);" What this does is it makes the script sleep for 10 milliseconds. The reason for doing this is to prevent the script from using max CPU. Without the sleep, the script will try to execute the contents of the loop as many times as possible, and as fast as possible, which is very CPU intensive. Having a sleep will prevent this. Now, we should try to figure out how to structure the main loop of the script. The structure depends on what activity the script will be performing. For this script, we are going to make a basic Draynor willow cutter and banker. Note: I won't be testing this script, nor will I be using 100% correct tiles, IDs, or names. I will make the structure first check the area in which the player is in. Then, the script will check other conditions to determine what to do. The following script is how I decided to structure this script. All of the new methods written are stubs and we will fill them in soon. package scripts; import org.tribot.api2007.Inventory; import org.tribot.script.Script; public class TutorialScript extends Script { /** * Checks if we are at the trees. * * @return True if we are at the trees; false otherwise. */ private boolean isAtTrees() { return false; } /** * Checks if we are in the bank. * * @return True if we are in the bank; false otherwise. */ private boolean isInBank() { return false; } /** * Attempts to cut a tree. If we are already cutting a tree, we will wait * until that tree has been cut. * * @return True if we were able to cut the tree; false otherwise. */ private boolean cut() { return false; } /** * Checks if we are cutting a tree. * * @return True if were are cutting a tree; false otherwise. */ private boolean isCutting() { return false; } /** * Attempts to walk to the bank. * * @return True if we were able to walk to the bank; false otherwise. */ private boolean walkToBank() { return false; } /** * Attempts to walk to the trees. * * @return True if we were able to walk to the trees; false otherwise. */ private boolean walkToTrees() { return false; } /** * Attempts to bank our items. * * @return True if we were successfully able to bank the items; * false otherwise. */ private boolean bank() { return false; } @Override public void run() { while (true) { sleep(50); if (isAtTrees()) { // We are at the trees // Time to check what to do. If the inventory is full, we should // walk to the bank. Otherwise, we should cut the willows. if (Inventory.isFull()) { // The inventory is full walkToBank(); // Let's walk to the bank } else // The inventory is not full cut(); // Let's cut the willows. } else if (isInBank()) { // We are at the bank // Time to check what to do. If the inventory is full, we should // bank the items. Otherwise, we should walk back to the trees. if (Inventory.isFull()) // The inventory is full bank(); // Let's bank the items else // The inventory is not full walkToTrees(); // Let's walk to the trees. } else { // We are neither in the bank, nor at the willows // Time to check what to do. If the inventory is full, we will // walk to the bank. Otherwise, we will walk to the willows. if (Inventory.isFull()) // Inventory is full walkToBank(); // Walk to the bank else // Inventory is not full walkToTrees(); // Walk to the trees. } } } } Assuming you know how the flow of execution is, the comments should be fairly easy to follow, and should explain everything. Now, let's fill in isAtTrees(). How should we do this? Let's find the nearest willow tree, and see if it is on-screen. private boolean isAtTrees() { // We search for the trees by their name - Willow. The means that we // will search for the trees within a radius of 20 tiles from our // character. If they are more than 20 tiles away, the findNearest // method will not find them. Although, if they are more than 20 tiles // away, we can be sure that they aren't on the screen. // We will now store the variable returned form findNearest in the // variable called 'willows'. We declare this variable final because we // will not be changing it's contents after the variable is set. // According to the API, the returned value from findNearest will be // RSObject[]. If there are no trees found, the array will not contain // any elements. The returned value cannot be null, and therefore we // don't have to null check it. // Next, we check the length of the array. If the length is less than 1, // we know that no trees were found. We can now return false. final RSObject[] willows = Objects.findNearest(20, "Willow"); if (willows.length < 1) return false; // The array contains at least one element. The first element in the // array will be the nearest tree to our character. Let's check if this // tree is on screen. We will return the value. return willows[0].isOnScreen(); } Now, we will fill in the isAtBank() method. We will check if either a bank booth, or banker is on-screen. I will explain things in less detail this time since the details above apply to some of the code below. private boolean isInBank() { // Let's first search for on-screen booths. final RSObject[] booths = Objects.findNearest(20, "Bank booth"); if (booths.length > 1) { // A booth is in the array. Let's check if the first element of the // array is on the screen. if (booths[0].isOnScreen()) return true; // The booth is on the screen. We don't need to // check for visible bankers since we already know // that we are in the bank. Let's exit this method // and return true. } // Nope, the nearest booth is no visible. Let's go and and search // for bankers. final RSNPC[] bankers = NPCs.findNearest("Banker"); if (bankers.length < 1) return false; // No booths are on the screen, and no bankers exist. // Let's just exit already since we know that we are // not in the bank. We will return false. // Okay, so we found a banker. The first element in the array is the // nearest NPC. Let's check if that NPC is on-screen. return bankers[0].isOnScreen(); // Return whether or not the banker is on // the screen. If it is, we are in the // bank; if not, then we are not in the // bank. } Now, let's fill in cut(). We will first check if we are already cutting. If we are, then we will wait until we are not cutting anymore. If we are not cutting, we will attempt to cut the tree. private boolean cut() { if (isCutting()) { final long timeout = System.currentTimeMillis() + General.random(60000, 90000); // Let's define a timeout for the loop below. If we don't have a // timeout, it is possible that the script will enter an infinite // loop, and will therefore be stuck. We set the timeout for the // current time plus somewhere between 60 and 90 seconds. We use // randomness to avoid seeming bot-like. while (isCutting() && System.currentTimeMillis() < timeout) { sleep(100, 150); // We will loop while we are cutting, and while the current time // is before the timeout. Make sure to have a sleep to prevent a CPU overload. // We could also implement some anti-ban features here if we // want. // Now, let's check if the willow tree is still at the location // of the last clicked location. To do this, we will define a // global variable - last_tree_tile - of type RSTile. The // variable will be defined below, when we find and click a // tree. // Make sure to null check the variable, since it can be null. // If it is null and we try to perform actions upon it, a Null // Pointer Exception will be thrown, crashing the script. if (this.last_tree_tile != null) { // The variable is not null. We can use it now. if (!Objects.isAt(this.last_tree_tile, "Willow")) { // The willow tree is gone. It has either been chopped // down, or turned into an ent. Let's break out of this // loop. break; // Good-bye loop } } } } // Let's go find a tree to chop. final RSObject[] trees = Objects.findNearest(50, "Willow"); // Search for the willow within 50 tiles // from our character. if (trees.length < 1) return false; // No trees have been found. We can't do anything, so // let's exit this method. if (!trees[0].isOnScreen()) { // The nearest tree is not on the screen. Let's walk to it. if (!Walking.walkPath(Walking.generateStraightPath(trees[0]))) // We could not walk to the tree. Let's exit so we don't try // clicking a tree which isn't on screen. return false; if (!Timing.waitCondition(new Condition() { // We will now use the Timing API to wait until the tree is on // the screen (we are probably walking to the tree right now). @Override public boolean active() { General.sleep(100); // Sleep to reduce CPU usage. return trees[0].isOnScreen(); } }, General.random(8000, 9300))) // A tree could not be found before the timeout of 8-9.3 // seconds. Let's exit the method and return false. we don't // want to end up trying to click a tree which isn't on the // screen. return false; } // Okay, now we are sure trees[0] is on-screen. Let's click it. We may // be still moving at this moment, so let's use DynamicClicking. // DynamicClicking should be used when your character is moving, or the // target is moving, and you need to click the target. if (!DynamicClicking.clickRSObject(trees[0], "Chop down")) // We could not click the tree. Let's exit the method since we // failed. return false; // We clicked the tree. Let's first wait to stop chopping for 1-1.2 // seconds just in case we moved on to this tree while still performing // the chopping animation. Timing.waitCondition(new Condition() { @Override public boolean active() { return !isCutting(); } }, General.random(1000, 1200)); // We don't need to if check it since the result doesn't matter. if (Timing.waitCondition(new Condition() { // Now let's wait until we are cutting. @Override public boolean active() { return isCutting(); } }, General.random(8000, 9000))) { // We are cutting! Now let's record the tree's tile and return true. this.last_tree_tile = trees[0].getPosition().clone(); // getPosition() can never be null, so we don't need to null check // it. return true; } // We failed to cut a tree. Return false. return false; } Now, let's fill out isCutting(). We will simply check the animation. private boolean isCutting() { return Player.getAnimation() > 0; // If the animation ID is greater than // 0, then we are animating. Let's // assume that if were are // animating, that the animation is // the chopping one. } Now let's fill out walkToBank(). Since we are lazy, we will just use web walking. private boolean walkToBank() { if (!WebWalking.walkToBank()) { // We failed to walk to the bank. Let's return false. return false; } // Walking succeeded, but we may still be moving, and not our destination // yet. Let's wait until we are in the bank. return Timing.waitCondition(new Condition() { // If we reach the bank before the timeout, this method will return // true. Otherwise, it will return false. @Override public boolean active() { General.sleep(200, 300); // Reduces CPU usage. return isInBank(); } }, General.random(8000, 9000)); } Now, let's fill out the walkToTrees() method. Once again, we will use web walking. We will search for the nearest willow tree to determine which tile to walk to. private boolean walkToTrees() { final RSObject[] willows = Objects.findNearest(50, "Willow"); if (willows.length < 1) // No willows could be found. We cannot do anything. Let's exit this // method. return false; // Let's walk to the closest willow tree now. if (!WebWalking.walkTo(willows[0])) // We failed to walk to the bank. Let's return false. return false; // Walking failed, but we may still be moving, and not our destination // yet. Let's wait until we are at the trees. return Timing.waitCondition(new Condition() { // If we reach the trees before the timeout, this method will return // true. Otherwise, it will return false. @Override public boolean active() { General.sleep(200, 300); // Reduces CPU usage. return isAtTrees(); } }, General.random(8000, 9000)); } Last method for our basic script; bank(). First, we will check if the bank screen is open. If it is not open, we will open it. Once opened, we will bank our logs. private boolean bank() { if (!Banking.isBankScreenOpen()) { // The bank screen is not open. Let's open it. if (!Banking.openBank()) // Could not open the bank. Let's return false. return false; // Since openBank() will wait for the bank screen to be open before // returning true, it is safe to assume that the bank screen is now // open. } // Now let's deposit the logs. We will check if an axe is in our // inventory. If there is one, we will bank by using our inventory // items. Otherwise, we will just click the deposit all button. // Let's define our axe names now. It is better to define variables like // this globally, but we only use the axe names within this method, so I // don't feel the need to. final String[] axe_names = { "Bronze axe", "Iron Axe", "Black Axe", "Steel Axe", "Mithril Axe", "Adamant Axe", "Rune Axe", "Dragon Axe" }; if (Inventory.find(axe_names).length > 0) { // If the length of the returned value if greater than one, that // means we have an axe in our inventory. if (Banking.depositAllExcept(axe_names) < 1) // We failed to deposit our items. Let's exit and return false. return false; } else { if (Banking.depositAll() < 1) // We failed to click the deposit all button. Let's exit and return false. return false; } // Okay, our items should get deposited. Let's wait and make sure they // get deposited. return Timing.waitCondition(new Condition() { // Since we can only enter the bank method if our inventory is full, // let's wait until our inventory is not full. If it is not full // before the timeout, return true. Otherwise, return false. @Override public boolean active() { return !Inventory.isFull(); } }, General.random(3000, 4000)); } We have finished coding the basic functionality of the script. We forgot to include a Script Manifest, so let's do that now. A Script Manifest tells the Script Manager details about our script. To do this, we include the ScriptManifest (org.tribot.script.ScriptManifest) runtime annotation right above the defining of the script class. @ScriptManifest(authors = { "TRiLeZ" }, category = "Woodcutting", name = "Basic Willow Cutter", version = 1.00, description = "Cuts and banks willows in Draynor.", gameMode = 1) public class TutorialScript extends Script { We have finished writing a basic Draynor willow cutter and banker. We could go further and add more features and functionality such as paint, but that will be covered in a different tutorial. Let's move on. 5. Scripting Tips When piecing together a script, try and test each method piece by piece. Doing this makes sure that code is functional before moving on to coding another section. It was make things easier when you finish writing the script, and try testing for the first time. The script may not work correctly on the first try, and might need to be modified in a bunch of methods. Doing testing piece by piece will reduce the amount of end modifications needed, and it will also help you find bugs easier. Avoid linear coding. If one action fails in a line of actions, the script will try to perform the next actions, but will fail to do so, and will screw up. Check the returned value of API methods. If the method failed to do something, or if requirements aren't met, then don't execute the code that follows. Another benefit to not using linear coding is being able to start the script at any location/state, and the script will be able to pickup where you are, and continue to do what is needed. With linear scripts, you are restricted to starting at a certain location/state. Don't restrict your users that way. Read the source code of others; specifically, from scripters who have more scripting knowledge than you. I have a bunch of open source RS3 scripts. Those may not be the same as an Old-School script, but they'll show you a great script structure, and other great scripting mechanics. Read the TRiBot API documentation. 6. Things to Check For NullPointerException (NPEs) These occur when a variable is null, and you try to perform an action (other than a null check) on that variable. They are simple to prevent. The API will state whether or not null is a possible result of the API method. If the method can return null, you need to: Store the returned value in a variable. Null check that variable. If not null, you can perform actions upon it. Null checking is like so: if (variable == null) //Oh no. The variable is null. Let's not perform any action upon it. Note: theMethod() != theMethod() Values returned by methods may not always be the same. The first could be not null, and the second could be null. Do not null check the return of a method unless you store that returned value in a variable, then null check that variable. Example: if (object.getDefinition() != null) { final String name = object.getDefinition().getName(); } The first call to getDefinition() may not result in a null returned value, and would pass the null check. The second call to getDefinition() could return null, resulting in an NPE. In this case, the returned value of getDefinition() should be stored in a variable. That variable should then be null checked. After the null check is passed, getName() can be called upon that variable. IndexOutOfBoundsException This occurs when you try to load an element from an array which is not within the bounds of the array. This exception is thrown when an array element is loaded from from index such that: index < 0 index >= array.length Always make sure to check the length of the array before trying to grab an array element at an index. Also, never try grabbing an array element at a negative index. Negative indices don't exist. Index checking is simple: if (index >= 0 && index < array.length) { //The index is within the bounds of the array. //We can pull the value of array[index] now. } Sometimes checking index >= 0 isn't necessary if you already know index isn't negative. Infinite Loops Infinite loops occur when a thread never exits a loop. Typically, these are while loops. Make sure to use a timeout on loops to prevent this. Inefficient Coding There exists so many possibilities which inefficient code can exist. I'll give just a few pointers: In while loops (sometimes also other types of loops), make sure to include a sleep at the top of the loop. If the loop contains no sleeps, it will execute the code of the loop as much as possible, and as fast as possible. The loop will use as much CPU power as it is able to. Avoid this. Store returned values from methods in variable if you are going to use the value twice. You may already need to store the value in a variable to do a null check anyways. If you are waiting for a condition, make sure to use appropriate sleeps. If you don't need to perform an action immediately after a different action, or if a few hundred milliseconds doesn't harm the outcome of whatever you are doing, use a larger sleep rather than a smaller one. Larger waits will reduce CPU usage. When using object finding, doing set the tile radius too large. If an object is expected to be within 10-20 tiles of your character, don't search for the object with a radius of 60 (unless there is a reason to). Don't define all the needed variables of a method all at once. Define them one at a time, then inspect the variable. You may not need to use all of the variable before coming to a conclusion. 7. Bug Fixing A lot of scripters here haven't quite yet grasped the concept of bug finding and fixing, so here we go. First, you have to identify the problem. Let's create an example... the script isn't clicking on the oven (cooking script). Next, you have to identify the code that is responsible for performing the action which isn't being performed. In our example, we have to find the piece of code that clicks the oven. Next, try doing a brief scan of your code and see if you can find any obvious logic errors. If weren't able to solve the bug with a brief scan, then try debugging code. Here's what I suggest: using println. Use println to determine if a section of code is being executed or not. If it's not being executed, try to find where the execution cuts off. Find the exact position where the execution cuts off. This cut off will likely help you fix the bug. Identify why the execution cuts off at where it does, then fix it. You will probably also have to check variables. Check all variables, and all method return values in suspect. The way you check variable is you println their value(s). In our example, we should have inserted printlns to make sure our oven clicking method was being hit, and we should have checked the variables involved in clicking the oven. That's the gist of bug fixing. Think about what is going wrong, what code is responsible, and why the code is failing. Println everything. 8. Conclusion That concludes this scripting tutorial for now. I may expand it in the future. Warning: I may or may not respond to individual scripting questions on this thread. Here is the final script from this tutorial:
  16. 20 points
    Today marks the first year that has past since my Brother past away due to a car accident when he passed a disabled vehicle and got hit head on. He was 18 years old and was going to the Beach with three of his friends who are still alive). This was my second and last brother that died in a car crash. I post this not to feel pity for me but to remind you to cherish the ones you love in life. One day you might lose them without getting to say goodbye.
  17. 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.
  18. 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.
  19. 18 points
    Fixed clicking/uptext/choose option bugs Fixed minimap clicking bug Updated the world hopper
  20. 18 points
    Combat AIO fighter [lite edition] Combat AIO is TRiBot's most advanced combat script. Written by Assume, one of TRiBot's most popular scripters Combat AIO strives to be the highest quality script available. Features: AIO CombatCustomizable lootingCombat radiusSaving your settingsCustom API's for eating, prayer, equipment swapping, combat, monster selection, and pathingPremium features: All lite edition featuresfull potion supportfull special attack supportcustom pathing supportbankingGuthans HOW TO INSTALL: Go to the tribot repository and install it. Bug report format: TRiBot Version: CombatAIO Version: Using Looking Glass (y/n): Operating System: Using VPS (y/n): Using tabs (y/n): Bot Debug (Pastebin ONLY): Client Debug (Pastebin ONLY): GUI Setup Screenshots (Imgur ONLY): Stack Traces (Do at least 4 seperate times, Imgur ONLY): Once you have filled out the above form, type a description of the bug, and any additional information you deem necessary. If you do not follow the bug report format, your bug reportwill be ignored. How to Copy Debugs How to Print Stack Traces Progress and bug reports are appreciated, enjoy!
  21. 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
  22. 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.
  23. 18 points
    How does it work: 1. Creates an account. 2. Designs a female rs character. 3. Skips tutorial island. 4 Searches for and follows random male players asking if they want a girlfriend. (handles doors as well) 5. Successfully engages in "flirty" conversation with other players. 6. Eventually asks for money. 7. Will accept trades and has a small chance to trade the player on it's own. 8. Eventually admits that the bot is a 52 year old pedophile named Alex and awaits for the victim's response. 9. After receiving a response, the script will take a screenshot and save the file to your computer. Upcoming releases: Script that reports all nearby players for no reason Player harassing scriptBegging scriptSpam trading scriptDancing for money scriptScript that follows random players
  24. 18 points
    Leaning Java with TRiBot - Program Structure Click Here for a List of All Tutorials If anyone would like to provide any advice or feedback on the tutorial, please message me on Skype. I want to keep the comments to questions as much as I possibly can, so people can learn not only by reading the tutorial, but also reading the rest of the thread. Thank you! Introduction As always, be sure that you read every line of this tutorial carefully. If you don't, you are going to find yourself very lost. When I tell you to stop and think about something, I'd definitely recommend that you listen! By now you should have read, and hopefully loosely understand, my 1st tutorial. If you haven't, I would highly recommend doing so before reading this. Now then, let's get into it! In the previous tutorial I talked about how Java is an object oriented programming language, and the basics of what that means. You probably thought to yourself "that's super cool and everything, but I don't feel any closer to being able to write a script than I did when I started". I can only imagine your face right now. While you might feel that way, I can promise you that you have definitely made a huge step in the right direction! It's going to be a little while until you can apply what you learned, but I promise you, you are going to be glad that you learned it when you did! With that all said, let's get to the point. This installment is going to be all about the basics of how a program is put together. Overview Methods. Classes. Variables. Interfaces. Do those mean anything to you? You might be thinking "sure they do! they are all words!" If that's what you're thinking, you're in the same boat that most other people reading this is in. Congrats! Throw yourselves a yacht party, because that's going to be one big boat! Horrible jokes aside, the point is that you aren't alone in this. Lots of other guides you may or may not have tried to already read tend to throw these terms around like you're already a master at programming. Didn't feel very good, did it? So, let's backtrack a bit. How a Program Works As I mentioned in the previous tutorial, all programming really boils down to is telling the computer to do something, and the computer doing it for you. Ever stopped and thought about why the term is "programming language"? When you type code, you are literally telling the computer what to do. You are communicating with the computer. Parts of a Program Every programming language requires you to spell out what it is that you want the computer to do. For example, let's say that you want to write a woodcutting script. At some point in your program, you are going to write a line of code that tells the computer to chop down a tree. However, chopping a tree has multiple parts to it, right? What is the methodology you are going to use for chopping down the tree? Before you write any code, or learn anything else, I want you to think about that. Keep thinking until you have a general idea. It shouldn't take you more than a couple of seconds. Done thinking? Good. You should probably have been thinking something along the lines of this: find closest treewalk to closest treeclick closest tree That is an example methodology the script could use when chopping down a tree. Of course, that is an over-simplified example. You would also have things such as turning the camera, clicking the correct option, etc. The best advice I can give you when you're trying to figure out the methodology of something is to think about what you would do as an actual player when playing RuneScape, both physically and in your head; for example, finding the closest tree. That's something you do in your head, but is still incredibly important. Methods Before you can start linking together various parts of your methodology, you must first have them ready to be used. In Java, the term used to define part of a methodology makes perfect sense: a Method. That makes things easy to remember, doesn't it? Remember how Java uses objects? Methods are used to tell objects what to do and how to do it. Look back at the woodcutting example from the previous section. You can think of each line as a different method. Notice how each method describes what your player is doing? First, your player find the closest tree. Then your player walks to the closest tree. Then your player clicks the closest tree. Your player is the object, and what you are telling your player to do are the methods. Let's go back to the car example from the previous tutorial. What sort of methods would a car need to use? 90% or more of you probably won't, but I'll ask anyways: Stop for a moment and try to think of what a car might need to do. Here's what I came up with: AccelerateTurnReverseStopTurn OnTurn Off There are many more that you might have thought of, those are just some off of the top of my head. Let's look at another analogy. If you are still having a hard time grasping what a method is, pretend you are a teacher writing a homework assignment for his or her students. Your assignment must have instructions. You are going to be writing out the instructions on a piece of paper, and giving the instructions to your students. Now think of each step of your instructions as a method. The only difference is that when you are writing a Java method, you are writing in Java instead of English. That's all a method is; a set of instructions for an object to do. Classes I want you to take a step back, and I want you to breath. Why, you ask? This next step might be a bit confusing. If it is, that's okay. It's a lot to wrap your head around. This is going to be the last thing I cover before we dive into writing code! Remember back when I was talking about objects? A car is an object, a goat is an object, etc. Let's really start thinking about this for a moment. "A goat is an object". What is this statement saying, exactly? This is saying that each individual goat is an object. You're probably like "ok...?" I don't blame you, that seems like a really, really boring and anti-climactic statement. In reality, it's an important concept to understand. In the previous section you learned that methods make objects do something. You understand that you are going to be using methods to give objects instructions (if that isn't the case, re-read the previous section). However, it isn't clear where these methods "go". You know they are "attached to an object", but what does that even mean? Methods are a type of Java code. By now you should understand that. Objects, on the other had, are created by code. Again, "da fuq?" Okay, let's take another step back. Objects are created by the computer. Let's look at RuneScape for example, specifically at trees. There are, I don't know, a bazillion trees in RuneScape? Each tree is an object that was created by the computer. Each player is an object. Each monster is an object. But where did they come from? All objects are created by classes. A class contains a set of instructions that define what an object is and what it does, which you already know are called methods. In the outline above, you will see that the light green shows where the class is, and the yellow shows where the methods are. You can see how all of the methods are contained neatly within the class. This diagram is very similar to how a regular java class is laid out. In one of the next upcoming tutorials, you will learn how to use classes to create new objects. Simplification: An object is something created by a computer. The class is the instructions to the computer how to make that object. Conclusion This is the end of the second installment of my Learning Java with TRiBot tutorial series. This session was all about starting to get an idea of how a java program is structured. If there is anything listed above that you would like a graphical representation of so you can visualize it better, please let me know and I will do my best to include it. If there is anything you don't understand, please let me know! If you didn't understand it, chances are someone else didn't either. Click Here For Tutorial #3!
  25. 17 points
    Hello TRiBotters, For the past six months, we have been collecting human mouse data for the purpose of implementing real human mouse movements into TRiBot. Most botting clients use computer generated, pseudo mouse movements. Over my 6 years of bot development, I have never seen a botting client which can produce realistic pseudo mouse movements (in my opinion). The problem is that pseudo mouse movements are too predictable and alike. They are either all too curved, too straight, or too random (humans aren't random). Since the RuneScape client can track mouse movements and send it to Jagex's servers, Jagex are able to generate statistics based on the player's mouse movements, which they can then use to detect bots (If they want. Only Jagex employees can know exactly how their detection systems work). Using pseudo mouse movements is too much of a risk to put on people using TRiBot. This is the reason why I started the Human Mouse Project. By using real human mouse movements instead of computer generated, pseudo mouse movements, we can avoid detection to the extent by which Jagex uses mouse data in the detection process. Every user using the Human Mouse has a specific mouse data collection. This collection will have been generated by a single, unique (human) individual. This mouse data collection will share all of the specific mouse movement characteristics of the person who generated it. We have a vast collection of these human mouse data collections. A flaw with many botting clients is that all bots will share the same pseudo mouse movements characteristics. However, with TRiBot's Human Mouse, on top of using real, human mouse movements, we have different sets of human mouse data collections, each with their own set of characteristics. This is the only way to ensure that Jagex won't be able to identify TRiBot via collected mouse movement data. We have one limitation though, which is that not every TRiBot user will be able to use the Human Mouse. This is because we want each TRiBot user's human mouse data to be as unique as can be. We don't want many users all using the same human mouse data/characteristics. Because of this limitation, we are capping each mouse data collection at 10 TRiBot users. Since we only have about 70 unique human mouse data collections, we can only offer the Human Mouse to about 700 users (at this time). For that reason, we will be limiting the Human Mouse to VIP-Extended users only. However, if you want access to the Human Mouse without purchasing VIP-Extended, or want to contribute to the project, you can follow the instructions here for building your own human mouse data collection: https://tribot.org/forums/topic/39131-human-mouse-project-data-collection/ With the community's help, we can beat Jagex's detection systems. Thank-you, TRiLeZ
  26. 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.
  27. 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.
  28. 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.
  29. 17 points
    Hi, this is my mining script. it is my first ever script i have written as i am new to programming. I will be expanding this script, adding more features as i learn more. Mat has helped me a lot to write this script. his taught me pretty much everything. Cant forget to mention the help and knowledge JJ has given me! They have both been supporting me when i need it so credit goes to both, Mat and JJ Features: Power mines M1D1 Banks supports all ores Paint - Thanks to Fallen <3 6 hour reset Runite Mining with World Hopper (members only) (Currently Disabled) Essence Mining Locations: Varrock east Varrock west Barbarian village Alkharid Rimmington Lumbridge Yanille Mining Guild Mining Guild Resource Dungeon Dwarvern Mines (Currently Buggy) On Repo. V1.0 : initial release V1.1 : animation ID Grabber, re-wrote mining method so now it only mines the one you choose. (with the help of JJ) V1.2: Added Banking Added Power mining Added M1D1 Fully functional GUI (taught by JJ) V1.3: fixed non-walking issue Added both Lumbridge Added Rimmington V1.4: Added Mining Guild Added Mining Guild Resource Dungeon Added Dwarvern Mines Tweaked Mining Tweaked other things here and there V1.5: Added Paint Temporarily removed Dwarvern Mines 6 hour bypass Toggles Run Minor tweaks overall V1.6: Fixed M1D1 Fixed Walking Re-wrote main loop V1.7: Re-added Dwarven mines BankDeposit Box Support Added failsafes Tweaked Mining Improved banking Lower Ban rate Fixed and Tweaked many things Automatically uses Dep box if 15 dung V1.8: Removed Mining guild, Dwarvern Mines and Resource Dungeons Added Yanille Added Loads more Failsafes Fixed and improved Powermining and M1D1 Fixed Banking and Walking properly Sorted whole script out! V1.9: No longer needs Red outline improved overall script Better M1D1 Better Powermining Added back locations V2!: Improved M1D1 Runite mining World hopper Essence Mining (VIP only) - Varrock only. A new Paint Thanks to FallenShadow! <3 Other Minor tweaks here and there V2.1: Updated to work with RS3 Disabled some features due to major changes. Updated Essence Mining to reduce most of the bugs A lot more! About the Update!: Had to change majority of the script due to game and API changes. Some areas may be a bit buggy however, most work Thanks To FallenShadow for making me a Paint! Looks sexy! you know where to go for the best paints Please give feedback! Especially on the essence miner! Would Love more suggestions please! To-do: Add more locations Fix a lot of the bugs! Add ability to mine more then one specific rock at the same time. New GUI Welcome to suggestions and feedback Thanks Credit: Mat JJ iRoc FallenShadow Script going In Repo
  30. 16 points
    Tau Grand Exchange || Clicking the button above will NOT charge your TRiBot account. What is Tau Grand Exchange? 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 < Core 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 Starting Tau GE Without the GUI 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") Progress Reports Current Best Progress Report More Progress Reports 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 <--- Upgrade Policy & Instructions Unfortunately, TRiBot does not currently provide an easy way for Premium Scripters to allow their users to upgrade their payment plan (for example, Monthly Auth -> Monthly Unlimited Auths). As a workaround, I have devised the following upgrade policy. Read it carefully before requesting your upgrade. Rules, Terms, and Conditions 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, @Pwningcows, to the PM. Wait for either myself or @Pwningcows 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 At this time, Tau Grand Exchange does NOT support Mac OS. If you intend on running Tau Grand Exchange on a mac, it is highly recommended that you install a Windows/Linux VM, or use a VPS. The "Buy High -> Sell Low" price checking feature is no longer supported. Do NOT enable price-checking until Tau Grand Exchange 2.0 is released. 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.
  31. 16 points
    Thread needs to be updated. Basic overview: - ABCv2 - Preset locations - Custom locations - Mouse Key Dropping - Shift Dropping - Bird Nest support - Progressive mode (and axe upgrading) coming soon Become a patreon and help support my scripts!
  32. 16 points
    Posting a proper bug report for a script isn't very self-explanatory and is quite ambiguous for many users, thus resulting in many bug reports to look something like this: “script not working. please fix”“so many bugs”“getting stuck”"script very slow! plx fix" Although it’s quite understandable to not know what information would be useful in a bug report (You would generally need to be quite fluent with computers or know a bit of programming), reports like these generally do not help the script writer debug the problem in most cases. (By most, I would say over 90% of the time) Script writers usually run through a series of tests before releasing their scripts. If the script is released without the tag BETA or Development, it would generally mean that they have fixed all problems and are not experiencing any problems with the script. It would be hard helping you without any information since the script was fine the last time they have ran it and would not know where to start. This tutorial will help you provide the script writer as much information as possible to fix an issue with the script. Why follow this as a guideline? If you post a bug report without sufficient information, this is how it would go: You post report and wait for me to replyI receive report, look over it and find out I have insufficient information. I tell you to post more information and wait for you to replyYou post more information and I will need to look over it againThis can go on for days. Proper Bug Report Format Step 1: Copy and Pasting Client and Bot Debug This can be found near the bottom edge of the Tribotclient. Press shift and click to selectively choose which lines to copy from. It would be preferred to copy both debugs completely and indicate to the script writer the time the problem have occurred (e.g 2:25:32). This is almost ALWAYS necessary. Even if the client or bot debug is spamming the same line over and over, the interval at which the line is being spammed may help the script writer know indicate where the problem may have occurred. Step 2: Screen Shot/GIF/Video Depending on the issue, you can decide for yourself which is the most appropriate. Many script writers such as myself put the bot status on the paint which will tell us at which state is the problem occurring at. Script writers know very well how their script works. What you see may not be what they see. I once had a user who refused a screenshot because he deemed it was useless because nothing was going on but proved to be a major part of what allowed me to debug the issue when he finally gave me a screenshot. Step 3: Stack Trace This is generally needed when a script is stuck. This will indicate exactly where the script is being stuck as and is very useful information. It can be found here (Print Script Stack Trace): It will look something like this once pressed (It will be visible in the Client Debug): [02:51:28] Script Stack Trace:[02:51:28] java.lang.Thread.sleep(Native Method)[02:51:28] org.tribot.api.General.sleep(yh:170)[02:51:28] scripts.daxHunter.utils.trap.Action$2.active(Action.java:44)[02:51:28] org.tribot.api.Timing.waitCondition(ko:50)[02:51:28] scripts.daxHunter.utils.trap.Retrieve.twoTickLaying(Retrieve.java:138)[02:51:28] scripts.daxHunter.utils.trap.Retrieve.actionOnTrap(Retrieve.java:65)[02:51:28] scripts.daxHunter.managers.BotManager.bot(BotManager.java:189)[02:51:28] scripts.daxHunter.Main.run(Main.java:110)[02:51:28] java.lang.Thread.run(Thread.java:745)Step 4: Description of Problem Giving detailed information on the issue is also a crucial part in allowing the script writer to debug your issue. You should indicate what causes the problem and how often the problem occurs. Step 5: Your Settings Provide the settings and modes which you have ran the bot in. In most cases, it would be screenshot of your settings in the GUI.
  33. 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.
  34. 16 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!
  35. 16 points
    Great idea, maybe we can start this off by you paying back the $2,000 you stole?
  36. 16 points
    I'm expecting that Deadman mode will use the same client as OSRS, so I should be able to add support for it quite easily.
  37. 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
  38. 16 points
  39. 16 points
    Leaning Java with TRiBot - Primitive Basics Click Here for a List of All Tutorials If anyone would like to provide any advice or feedback on the tutorial, please message me on Skype. I want to keep the comments to questions as much as I possibly can, so people can learn not only by reading the tutorial, but also reading the rest of the thread. Thank you! Introduction As always, be sure that you read every line of this tutorial carefully. If you don't, you are going to find yourself very lost. When I tell you to stop and think about something, I'd definitely recommend that you listen! By now you should have read, and hopefully loosely understand, my 2nd tutorial. If you haven't, I would highly recommend doing so before reading this. What is a Primitive? Recall from my previous tutorial that Java is comprised of objects. Objects are created by classes, and controlled by methods. This is useful, of course, but what about much simpler ideas? What if you want to know something that is too simple to be an object, such as the height of a person? That is what primitives are for. Types of Primitives There are multiple types of primitives, but I am going to be focusing on only several of them in this tutorial. The rest are much less commonly used, and I will have a tutorial on them in the future. For now, let's just focus on the following. Int As you have probably guessed, int is short for "integer". An integer is a whole number. An integer can be positive, negative, or zero, but because it is a whole number, cannot ever be a fraction or decimal. Integers are used when a decimal or fraction doesn't make sense. One of the most common ways to use an integer is when you are counting something. If you are counting something, you usually want to count in whole numbers. For example, how many trees are in this picture? The answer is 3. There are 3 trees. Now, I know what some of you might be thinking; "what if there is a half of a tree?". The answer to that is as follows: Don't think that way. Take the following picture for example. While it's funny to say that there are 2.5 men here (the TV show reference which makes it even funnier), there are in fact 3 people in this picture. If you tell the computer that there are 2.5 people, the computer won't understand your humor, and will get incredibly confused and you will get a lot of nasty errors. Another Example: If you are still confused as to why you might need a value that can't be a fraction of decimal, look at the top of your browser window. How many tabs are open? 1? 2? 10? I can bet you that the number of tabs open in your browser is an integer! Aaaand Another Example: Sometimes integers aren't necessary, but they just make life easier. Take a look at your various skill XP values in RuneScape. Imagine how confusing it would be if you could have 32,392.382394 XP in a skill. Double Remember when I said that ints can't be decimals or fractions? As I'm sure you guessed, doubles can be! Doubles represent pretty much any number you can think of. If whatever you are trying to describe should be able to be a fraction or decimal, you should use a double. Here are some examples of doubles: 3.4, 1.0, 1932.2, 2.2912992, -2.1, -3291, 0.0. While integers are usually used to count things, doubles are most commonly used to define properties of things. These would be things like weight, height, the pull of gravity, etc. Boolean A boolean has one of two values: true or false. Booleans are sometimes the hardest primitive for people to understand the usefulness of. To help clarify things, I present to you the following educational image. When you select someone as being "hot" or as being "not", you are selecting a boolean. Is this person hot? True or false? When you select your answer, the program sets a boolean to "true" or "false" depending on what you select. Another Example: Open up pretty much any script on TRiBot that has a GUI. Chances are that there is at least one check box on that GUI. When you press "Start" on that GUI, the script will look at all of the check boxes and see if they are checked or not. How is this done? As you probably guessed, with a boolean! Char You won't be using characters very often (even for advanced programs it isn't very common), but because of their uniqueness, I will mention them briefly. Char stands for character. Characters are exactly that: characters. Anything on your keyboard is a character. Here are some examples: 'A', 'B', 'C', 'G', 'a', 'b', ' ', '%', '~', etc. Conclusion This is the end of the third installment of my Learning Java with TRiBot tutorial series. This session was all about learning the basics of what primitives are in Java. In the next tutorial, we will be diving right back into program structure! As I mentioned in my previous tutorials, if people seem interested in this concept, I'll probably make videos to go along with my written tutorials as well! Also, if there is anything listed above that you would like a graphical representation of so you can visualize it better, please let me know and I will do my best to include it. If there is anything you don't understand, please let me know! If you didn't understand it, chances are someone else didn't either. Click Here For Tutorial #4!
  40. 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
  41. 15 points
    Source over at GitHub Example: Debug Paint: Api-Access How to use Api-Key WebWalker.setApiKey(apiKey, secretKey); My web walker will always be free, and the engine will always be open sourced. However, I currently pay 79 per month keeping my computation server up to be able to support Tribot's huge user base. Pathfinding algorithms aren't exactly light on the CPU. I've spent 200+ on the open beta keeping servers up for the past 3 months (40 + 79 + 79). I will try my best to keep the engine updated but I cannot guarantee I will be available to do so. Overtime, there will be more documentation on my walker engine. Feel free to create your own git branches and add features to my walker. If you profit from making scripts and use my webwalker, please consider buying yourself an api key. The public key will hit its call limit if everyone uses it. Funds go towards server costs and development time. Keep in mind that you are paying for the computational server + client-server communication, not the engine which is completely open sourced. Server will be up 99% of the time. I've managed to keep a total downtime of <30 minutes the past 3 months. Contact me right after you bought an api key! 400 Call Limit (~6.6 calls per second) resets every minute Free! - Already Included in source 1000 Call Limit (~16.6 calls per second) resets every minute $20.00/month 3000 Call Limit (~50 calls per second) resets every minute $40.00/month Not a developer? Support my project through Patreon! Public key limit will be raised once I hit the goal! All patrons have access to a developers key.
  42. 15 points
    The latest update seemed to have not broken any hooks from a quick glance, but Jagex has changed the way the graphics are produced which broke some major areas of the client. I've implemented a temporary patch for the non-LG client. The game may flicker every once in a while, but it should work just fine. I'm still working on fixing LG. Since TRiBot is a pure reflection client, we face more obstacles than other injection-based bots. LG should have a patch released within the next few hours. The regular client should have a permanent fix released in the next week or two, but this permanent fix will really only fix the flickering issue. Edit: It turns out there have been multiple hooks which are not working. I've fixed a few of them, but there are also a few more that need fixing. I'll continue working on them tomorrow. Edit2: The broken hooks have been fixed. The regular client is now back in working order. LG is still out of commission and is expected to be fixed later tonight. Edit from Todd: Since this is a temporary patch we are aware there are certain users that will still be having issues. If you are still have issues feel free to leave a comment below in the following format. Operating System: Java Version: Issue I'm Having: What Script I'm trying to use:
  43. 15 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.
  44. 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.
  45. 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.
  46. 15 points
    This update features: A new, human-like way of loading the client.Web browsers and the downloadable client download the RuneScape client every time it is run, so shouldn't TRiBot? TRiBot used to download the RuneScape client and save it in a location so that it can be accessed at future times without the need of downloading it again. The intention of doing so was to make loading the client faster, thus allowing you to start bots with less waiting.One downside of doing this is that Jagex will see via HTTP logs that you aren't downloading the client every time you boot the client. It's possible (but hasn't been proved) that Jagex could flag your account if they see that you aren't downloading the client every time you boot it.Thus, we are releasing a new feature called "Human-Like Client Loading," which will force TRiBot to download/load the client in the exact manner of which is done by the official client. We hope this update will have a positive effect on the current and future bot detection.This feature is automatically enabled for all users. To disable it, un-tick "Use Human-Like Client Loading" in the TRiBot settings.TRiBot's updater has finally been updated to fix the issues that were caused by the resizable mode update.
  47. 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
  48. 14 points
    Live updates for Tau Script Maker have been temporarily suspended. Development will continue behind the scenes, but these development updates will not be posted to the repository. You can expect these updates to be posted sometime in February. Until that time, the current version of Tau Script Maker will remain free on the repository for those who wish to use it. Tau Script Maker BETA Click Here to join the Tau Script Maker development chat! Important Those who are interested in actively contributing to the beta test can send me a PM, and depending on your level of contributions, will receive a discount when the script is released. If the script that you are working on requires a feature that you can't find, please ask for it! What is Tau Script Maker? Tau Script Maker allows you to easily make your own scripts. All you have to do is pick from the constantly growing selection of blocks and drag them onto your script. It's that easy! Here's a quick example of how you can easily make the script click a tree: Click Here For Image This might seem complicated, but it's not! Below you can see a preview of an entire, fully functional woodcutting script with banking! Click Here For Image Demo Video Features Clean, high quality modern GUI Easy to use drag-and-drop interface Simple but powerful blocks Customizable in every way Automatic antiban built into blocks Custom and unique antiban blocks Make incredibly advanced premium quality scripts easily yourself Never have to pay for a private script again! Features in Development Fully customizable paint The highest quality antiban available (see below) Script repository Tons of new customization options And much more! Blocks in Development Combat Magic Chartering Teleporting Camera Even more advanced antiban (see below) And much, much more! Antiban All blocks have antiban features automatically coded into them. You don't have to do a thing to have antiban that goes above and beyond ABCL 10, and I'm constantly adding more features to the antiban to blocks. All you need to do is look at the change logs to see all of the antiban that is being added! That's only the tip of the iceberg. You can add your own, custom antiban in a bunch of different ways. One example of this (there are many more) is antiban blocks. These blocks allow you to place antiban actions into your script, ensuring that your script is as human-like as possible. Are you running a farm? No problem! Antiban blocks change based on the account that is running them, so you can rest assured that all of your accounts will be unique. Change Log Most recent changes are at the top.
  49. 14 points
    Hello community, I am starting a new data collection project for reaction times. I'll use this data to adjust the formulas for calculating sleep times before clicking objects/NPCs/etc, which should make TRiBot have more human-like delays. To take part in this project: Activate this script. Run the script. Play RuneScape. See below for further instructions. After at least 20 minutes of playing (try for at least 1 hour), stop the script. The script will then generate a file called "reaction_times.csv" in the TRiBot app data directory (it'll say were it is exactly in the debug box). Upload that file and post it in this thread. Also post what activities you did, and the respective skill levels.Instructions for playing RuneScape: You can either mine rocks (no essence), or cut trees. Once you click a tree or rock, the debug will print "Object hash: 104343254," where 104343254 is a number greater than 0. If the number is equal to -1, that means the click did not register, and you should re-click the tree/rock. After you click, try not to make a bunch of mouse movements while waiting. Either keep the mouse fairly still, or move it off screen (if you want). You don't have to keep the mouse super still while it's over the RS client, but you should avoid excessive mouse movements because excessive mouse movements may result in inaccurate reaction timing. Continue doing this until you don't want to anymore.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. Do not left click on anything after the initial object click. Thanks, TRiLeZ
  50. 14 points
    For nearly the past two weeks, I have been working on creating an artificially intelligent antiban system, which is currently ready to be tested. The system works by analyzing how the script performs, the patterns that form, when the player is idling (and the length time), and the triggers which make the script perform certain actions. After doing the analyzing, the system will make decisions on when to perform antiban actions, when and where it should hover the mouse, and when to rotate the camera to face a certain object. This system works in conjunction with ABC (Anti-Ban Compliance), and character randomization (creating unique profiles for every different bot). In doing so, the antiban system is able to make the bot seem more human-like. Currently the antiban system is automatically able to apply the following ABC elements: Checking XPExamining Random ObjectsRandomly Rotating the CameraMouse Leaving the GamePicking Up the MouseRandom Mouse MovementRandom Right ClickingResponse Time to New ObjectResponse Time to Switching ObjectsHovering ObjectsUsing Closest Objects vs Using Objects Which Aren't the ClosestMoving to the Anticipated Next Object LocationDelay Between Item InteractionThrough my testing, the system works well. Now I'm asking the public to test the system, and tell me if it screws up the script. More thorough testing will be commenced when it's confirmed that the system does not break any scripts. To test the antiban system: At the "TRiBot Login" interface, select "Development Release." Doing so should make TRiBot Dev 9.200_0R1 boot up. When you run a script, the antiban system will automatically run in the background. Other things to note with the dev release: If the bot house control over the mouse, human mouse input will be blocked unless the user moves the real mouse over the bot mouse.