Jump to content


  • Content Count

  • Joined

  • Last visited

  • Feedback


Community Reputation

6 Neutral

About Shotdox

  • Rank
    New Botter

Recent Profile Visitors

526 profile views
  1. @YoHoJo Do you own Virmach or just make $x from each referral lol?
  2. Shotdox

    Generate Custom Reaction Times

    Custom Reaction Time Generator (Custom Antiban) What Is it and How To Use: So this code is an extra class for you to add to your utility classes which allows you to generate our own distribution of doubles, which can be used as a pause time for reactions between script actions. This is useful because you may want to distribution of reaction times to be completely unique compared to all other scripts, or different reactions may have different distributions, such as the reaction after a very afk action might have a different distribution to the bots wait time after a predictable action. // Do Stuff // Realize next action needs to be done wait(ReactionGenerator.nextReactionTime(200, 50, 0.007, 0.2, 100, 1800)); // Do next action Reaction time for after predictable action, such as clicking space after talking to an NPC: Reaction Time for normal actions, such as clicking on next NPC, (similar to ABC reaction time given: Reaction time after an AFK action, such as moving to next fishing spot: wait(ReactionGenerator.nextReactionTime(200, 50, 0.007, 0.2, 100, 1800)); The class can be found here: https://github.com/Shotdox/Tribot-Automatic-Banking Parameter List: mu (µ) - the mean of the Guassian distribution, should be taken as a sort of estimate for the average of the peak (exact average given in excel file). sigma (σ > 0) - the standard deviation of the Gaussian distribution, should be taken as how spread out the peak is. lambda (λ > 0) - the parameter given to the exponential function, should be taken as how quickly the peak will fall off. 0 < p < 1 - the probability of just using a uniform random variable, should be taken as the bit added to the whole bottom of the peak, uniform over (min, max) minimum - the minimum value the function will return maximum - the maximum value the function will return Testing Parameters: Try any custom parameters out and see the distribution by them using this spreadsheet: https://docs.google.com/spreadsheets/d/1P3abWrm9zj0ZCZnfcXZS0wX-Le8mlkPu4HieA9plScg/edit?usp=sharing Some Useful Starting Point Parameters: Predictable Action 30 10 0.02 0.01 30 500 Normal Action 200 50 0.007 0.2 100 2000 AFK Action 5000 2000 5 0.1 200 100000 Class: import java.util.Random; public class ReactionGenerator { Random randomGen = new Random(); public double nextGaussian(double mu, double sigma) { return mu + randomGen.nextGaussian() * sigma; } public double nextExponential(double lambda) { return -Math.log(1 - randomGen.nextDouble()) / lambda; } public double nextExGaussian(double mu, double sigma, double lambda) { return nextGaussian(mu, sigma) + nextExponential(lambda); } public double nextUniform(double minimum, double maximum) { return randomGen.nextDouble() * (maximum - minimum) + minimum; } public double nextReactionTime(double mu, double sigma, double lambda, double p, double minimum, double maximum) { if (randomGen.nextDouble() < p) { return nextUniform(minimum, maximum); } double exGaussian = nextExGaussian(mu, sigma, lambda); if (exGaussian < minimum || exGaussian > maximum) { return nextReactionTime(mu, sigma, lambda, p, minimum, maximum); } return exGaussian; } }
  3. I am currently reworking a lot of it to be more convenient for actual use, and this is something I plan to add, along with a feature to add multiple acceptable items to a specific slot. This would be useful for things like teleports that use a charge every time and change id.
  4. Shotdox


    I am outright shocked that you think Jagex manually detects any bots by walking around Runescape looking for them. This is completely incorrect and I would expect any botter to know better, especially a "Tribot Nerd". I believe bots are flagged by the "Bot checking tools" (which include things like "Botwatch") and then the evidance is (quickly) looked over by a mod and the ban is issued. Nobody knows though, but to ban thousands of accounts per day by just looking at them would be impossible, and false bans would be common. Whats more is Mod Jacmob (who developed Botwatch) used to be a bot developer (http://forums.zybez.net/topic/1546190-a-new-jagex-mod/) and to think that they don't know about the ways botters try to avoid bans is just ignorant. These Jagex Mods are software developers with degrees. Mod Wealth also says in his post "The botting community are definitely feeling the pressure". These people are paid to try and detect us. They will come on our websites, even download our botting clients in order to find out how they work and how they can be detected. They will put a lot more effort into detecting us then we ever can into avoiding detection, because they are being paid a livable salary for it.
  5. Shotdox


    https://twitter.com/jagexweath?lang=en This guys job description is literally "Anti-cheating specialist for OldSchool RuneScape"
  6. Shotdox


    To be fair Jagex has (almost) full access to the way we are trying to avoid bans, while we have no access to the way they are detecting bans, and they have people whose entire job is to make better anti-ban. For this reason, we are at such a big disadvantage that a lot of the time, public anti ban will not be worth it. I'm sure that Jagex has looked though some of our ban avoidance methods and had a good laugh among themselves. This being said,if I was botting on an account I spent a few hours making and put a few mill into it, I would want the best chance of not getting banned, and this would mean adding features that yes, might not help, but on the slim chance that it does (you will never know) it could save you hours of effort, for just a few extra lines of code. In the end be willing to loose any account you log into with a botting client or is on the same IP as a bot, and use ABC when your not suicide botting.
  7. Thanks for your response! Maybe I am misunderstanding you, but the inventory is already stored in objects, or at least a ArrayList of the private object SpecialItem. The strings are used to save and then quickly load these objects. Like a bot might use 4 different inventory setups and you can very quickly just copy each inventory string into your bot and it would load the objects for you so oyu don't have to go through and manually add each item. Is what your suggesting a better way to save and load objects?
  8. This is my first of hopefully many contributions to the Tribot community in what looks like will be a very long road to becoming a scripter. That being said I'm sure it's very possible that I have made oversights and mistakes in this work, but I will be working on this until it is perfect. Automatic Banking API (Inventory and Equipment Managment) What Is it and How To Use: So this code is an extra class for you to add to your utility classes which pretty much automates banking items. It will not be useful in all cases, such as when you just need to deposit all your items. This API should mainly be used in bots which have entire inventories to setup, like if you were making a Zulrah bot and had a specific inventory that you wanted to withdraw at the bank, including the equipment. The main feature of this is being able to detect what items are in your inventory, compare that to an already set inventory and then bank the items that you don't need and withdraw the items you do. It will also equip/dequip any items that are set in the inventory all automatically. I tried to make the whole setup feature very quick and an example of the code it takes to make a target inventory and then go to the bank and withdraw that exact inventory is: ExtraInventory targetInventory = new ExtraInventory(); targetInventory.fromString("true:1169:1:HELMET-true:4333:1:CAPE-true:1725:1:AMULET-true:843:1:WEAPON-true:1101:1:BODY-true:1099:1:LEGS-true:1065:1:GLOVES-true:1061:1:BOOTS-true:890:50:ARROW-false:117:1-false:361:1-false:361:1-false:361:1-false:361:1-false:361:1-false:361:1-false:361:1-false:361:1-false:361:1-false:361:1-false:361:1-false:361:1-false:361:1-false:361:1-false:361:1-"); targetInventory.bank(); This would (given you are near a bank) set up the inventory exactly as specified by the string given (a f2p pure pk settup). I have included code that can be used to get your current inventory setup as a string in the format that the class requires. This is how you could print your current inventory (and equipment) to the console. ExtraInventory currentInventory = new ExtraInventory(); currentInventory.setAsCurrentInventory(true); println(currentInventory.inventoryToString()); This means that your bot would be able to set your entire inventory and equipment to any setup you want, store these setups and change between the setups. The class can be found here: https://github.com/Shotdox/Tribot-Automatic-Banking Function List: (full documentation is in the code) ExtraInventory.bank() - used when the bot is close to a bank and the ExtraInventory should be withdrawn ExtraInventory.inventoryToString() - used to get the string of the ExtraInventory ExtraInvnetory.fromString(String itemString) - imports an ExtraInventoryyou have saved as a string ExtraInventory.isInventoryCorrect() - compares the current inventory to the ExtraInventory ExtraInventory.isSetupCorrect() - compares the current equipment and inventory to the ExtraInventory ExtraInventory.setAsCurrentInventory(Boolean setEquipmentSlots) - sets the ExtraInventory to whatever is in the inventory (and equipment if setEquipmentSlots is true) ExtraInventory.SetSlot(Equipment.SLOTS slot, int itemIdToAdd, int stackSize) - sets the slot given to the item given, which can be a name (ie "bronzePickaxe") or id ExtraInventory.addItem(int itemIdToAdd, int amount, int stackSize) - manually adds the item given, which can be a name (ie "bronzePickaxe") or id. (EG of use: if (prayerPotsUsed){ fightInventory.addItem("Prayer Potion (4)", amountOfPrayerPots, 1); } ExtraInventory.setMatchingEquipmentSlots(Boolean shouldMatch) - set whether to bank the equipment items or just the inventory items Features: 1. Withdraw any inventory and equipment and the ability to turn of equipment banking 2. If it has 7 arrows in its equipment and the target ExtraInventory has 50, it will withdraw 43 arrows and equip them 3. If it has 555 gp in its inventory, and the target ExtraInventory has 1000, it will withdraw 445 gp 4. If it doesn't have enough free inventory slots to equip/deequip the equipment, it will bank and put items in until it has enough slots to e equip all the unnecessary items 5. If it needs to withdraw 1-4 items it will quickly click the item in the bank that amount of times instead of using "withdraw x" (unless item is stackable) Known Issues: 1. Noted items are not supported to be withdrawn from the bank (they can be deposited). I may add this in the future. 2. Heavy lagg can cause failure when banking. This is very rare. 3. No current ABC. This only needs to be added in a few places if you wanted to add it, most of the code is just comparing data. 4. If you want to use names instead of ids when adding items to the inventory manually, you must add the file called names.txt (given in the github) to .tribot/bin/scripts/ShotdoxAPI/util/names.txt this file is just a copy of https://rsbuddy.com/exchange/names.json and can be updated there if it ever becomes outdated. When adding by names the code I use is not very efficient, but i doubt many people will be using this often so no, if you do not reference items by names you will not need the names.txt file 5. The strings associated with some inventories are very long and gross in the code. If anybody has any other ideas for storing all the data I'm all ears