Leaderboard
Popular Content
Showing content with the highest reputation on 06/01/20 in all areas
-
Hello Flewis, The code works pat yourself on the back. Its a good start. The logic is most important part of a bot and ever sagement is broken in to a logic spot. BUT using a switch statement like this is like using goto and we can do better. If think like a state machine were all action is true false pair. Programing becomes fast and rapid becuase you can use "and then" and "what if" thinking. Will spin flax in Lumbridge castle. Yes Banks on the top floor. Yes Can be stopped and started anytime and will figure out where you left off. It does but there like goto. Will stop when the user has no more flax in the bank. Yes. Has mechanisms to deal with lag for example if widgets don't open ETC. Check for nulls is great becuase they will crash the client but for lag look into ConditionalSleep. Tested on all server locations. No idea what this means. Two tips limit accounts per loop and use conditionals logic not switches. (switches have a place like during quest ). This is how I would do it . I just a rearaging of your code to limit actions per loop and tried to explain the thinking behind it. step 1: break the bot in to 2 logical opposites like has bow stirngs or does not have bow strings. (you can use this pattern for 95% of banking skills) step 2: Think to yourself If i dont have not flax were am i and how do i get ride of this not flax? step 3: fill in the code to get you to the bank, bank your items and with draw the flax. Once this is done the logic for getting flax is done. Step 4: The else logic we have flax, we could be at the bank, or going to the sping wheel or making bowstrings. step 5 fill in and done.3 points
-
Want to buy with OSGP? Contact me on Discord! Detailed feature list: - Banks at Ferox enclave - Teleports Salve graveyard (Teleport tab OR Runes) - Teleports Drakan's medallion (Slepe) - Supports multiple locations in the swamp & Slepe - Swaps location is location is already taken - Hop world to avoid players - Use Quick prayer option to block ghoul damage option - GE support to sell Mort myre and restock new supplies Custom Breakmanager: - Setup Bot and break times - Randomize your break times - Stop script on certain conditions (Stop on first break, Stop after X amount of minutes, Stop when skill level is reached) - Worldhopping - Crucial part to botting! Script queueing: - Support queueing multiple script in a row - All Khal scripts support flawless transitions in between scripts - Start creating your acc in a few clicks from scratch to multiple 99's - Flawless CLI support - Learn more here: How to use CLI parameters: - Example Usage: -script 1108:ScriptFile.BreakFile.DiscordFile SAVEFILE = Saved Filename BREAKFILE = Breakmanager Filename - SAVEFILE: Save file can be created in the GUI. Navigate to the tab you want to run and press "Save As CLI file". Please choose your filename wisely (No special characters) - BREAKFILE (Optional): Breakfile can also be create in the GUI, set the breaksettings you wish to use and press "Save new CLI BreakFile". Please choose your filename wisely (No special characters) - Final form (Note that with some bot managers you do not need to specify -script 1108): -script 1108:TaskList1.4515breaks (With breaks) -script 1108:TaskList1.4515breaks.discord1 (With breaks & discord) -script 1108:TaskList1..discord1 (NO breaks & discord)2 points
-
Set artifact build output directory to osbot\scripts folder, set artifact to build on project build, map ctrl+s to be a build project hotkey, boom 1 second rebuilds. But either way, interesting stuff, good job.2 points
-
This is an AIO (All-in-one) bot that has almost every thieving style except blackjack, ask for a free trial by liking thread or making a post! Vyres and elves are now supported! Both can make solid profit per hour, decent passive income! BIG THANK YOU TO ALL OUR SUPPORTERS! WE ARE THE MOST SOLD THIEVING BOT IN OSBOT HISTORY. MOST REPLIES, MOST USERS, LONGEST PROGGIES #1 Thiever | Most Overall Sales | Most Total Replies | Most Results | 10+ Years Maintained | 'the intelligent choice' by Czar SUPPORTS VYRES 224M made in a single sitting of 77 hours 1.1B made from elves and vyres!! ELVES SUPPORTED TOO! (NEW) 2.1m/hr, 6 crystals in 7 hrs 99 THIEVING MANY MANY TIMES, 35M EXP IN ONE BOTTING RUN!! 99 thieving in ~43k xp (12 minutes remaining)! Just got 99 proggy! Gratz to @iz0n THIEVING PET AT LVL 22 FROM TEA STALLS 11.5 HOURS, WITH PET TOO!! 610k/hr getting 99s on deadman worlds!1 point
-
NEW: Released Chop & Firemake plugin Added 8 Forestry events!!!!!!!! Easy 99, Next! Map Chooser System Progress Results! Help How to use this with Bot Manager? Script ID is 631, and the parameters will be the profile you saved in the setup window, e.g. oak15.txt I want a new feature added? Make a post below and I am always listening, within reason! The bot is doing something I don't like? Make a post below and I will adjust the code to match your play style!1 point
-
NEW! Added Gemstone Crab! 81 Hours at Cows Brutal Black Dragon support Sulphur Nagua support Blue Dragon 99 ranged 99 Ranged at Gemstone Crab 81 Range F2p Safespotting Hill Giants Hotkey List // F1 = set cannon tile // F2 = hide paint // F3 = Set afk tile // F4 = reset afk tile // F6 = Set safespot tile // F7 = activate tile selector // F8 = Reset tile selector // F9 and F10 used by the client, EDIT: will re-assign as they are no longer used by client // F11 = Set breaks tile // F12 = Reset breaks tile User Interface Banking Tab Demo (handles everything with banking) You can copy inventory (to avoid adding individual items...), you can insert item names which have Auto-Fill (for you lazy folk!) and you can choose whether to block an item and avoid depositing it in bank, ideal for runes and ammo. Looting Tab Demo (From looting to alchemy, noted/stackable items too) You can choose whether to alch an item after looting it simply by enabling a checkbox, with a visual representation. All items are saved upon exiting the bot, for your convenience! Tasking Demo (Not to be confused with sequence mode, this is an individual task for leveling) You can set stop conditions, for example to stop the bot after looting a visage, you can have a leveling streak by changing attack styles and training all combat stats, you can have windows alert bubbles when an event occurs and an expansive layout for misc. options! Prayer Flick Demo (Just example, I made it faster after recording this GIF) There are two settings: Safe mode and efficient mode, this is safe mode: Fight Bounds Demo Allows you to setup the fight bounds easily! Simplified NPC chooser Either choose nearby (local) NPCs or enter an NPC name to find the nearest fight location! Simple interface, just click! Level Task Switch Demo (Switching to attack combat style after getting 5 defence) You can choose how often to keep levels together! e.g. switch styles every 3 levels Cannon Demo (Cannon is still experimental, beta mode!) Choose to kill npcs with a cannon, recharges at a random revolution after around 20-24 hits to make sure the cannon never goes empty too! Results Caged Ogres: How does this bot know where to find NPCs? This bot will find far-away npcs by simply typing the NPC name. All NPCs in the game, including their spawn points have been documented, the bot knows where they are. You can type 'Hill giant' while your account is in Lumbridge, and the bot will find it's way to the edgeville dungeon Hill giants area! Here is a visual representation of the spawn system in action (this is just a visual tool, map mode is not added due to it requiring too much CPU) Fight Area Example (How the bot searches for the npc 'Wolf') Walking System The script has 2 main walking options which have distinctive effects on the script. The walking system is basically a map with points and connections linking each point. It tells the script where to go, and decides the routes to take when walking to fightzones. Walking system 1 This uses a custom walking API written by myself and is constantly being updated as new fightzones are added. Pros: - Updates are instant, no waiting times - More fightzones are supported Cons: - Sometimes if an object is altered, the changes are not instant - Restarting the script too many times requires loading this webwalker each time which adds unnecessary memory (there is no way to make it only load at client startup since I don't control the client) Walking system 2 This is the default OSBot webwalking API - it is relatively new and very stable since the developers have built it, but is currently lacking certain fightzones (e.g. stronghold) and other high level requirement zones. It is perfect for normal walking (no object interactions or stairs, entrances etc) and never fails. Pros: - Stable, works perfect for normal walking - All scripters are giving code to improve the client webwalker - More efficient when restarting the script since it is loaded upon client start Cons: - No stronghold support yet - Some new/rare fightzones not supported yet - If there is a game-breaking update or an unsupported fightzone, it may take some time to add/repair (less than 24 hours usually) So which system should I choose? Whichever one suits your chosen fightzone best! There really shouldn't be any problems - the sole purpose of these options are for backup and emergency purposes, if the script ever messes up there is always the next option to select. Note: If the script ever fails, there will be immediate updates to fix the walking systems! Script Queue/Bot Manager: Script ID is 758, and the parameters will be the profile name that you saved in the fighter setup! Bug Report templates: New feature request - What is the new feature - Basic description of what the script should do - Basic actions for the script: 'Use item on item' etc. For when the script gets stuck on a tile (or continuous loop): - Which exact tile does the script get stuck on? (exact tile, not 'near the draynor village') - Plugin or normal script? - Did you try all 3 walking options? Script has a logic bug (e.g. dies while safespotting) or (cannon mode doesn't pickup arrows) - What is the bug - How did you make the bug happen - (optional) recommendation for the bug, e.g. 'make the script walk back' or something - Tried client restart? - Normal script or a plugin? - Which exact setup options are enabled? Afk mode, cannon mode, etc etc.1 point
-
by Czar Buy now (only $8.99!) 143 HOURS IN ONE GO!!!!! update: this bot is now featured on the front page of osbot! More reviews than every other fishing bot combined! 100 hour progress report!!! How to use Script Queue: ID is 552, and the parameters will be the profile name that you saved in setup! This process is really simple, just to save you headache1 point
-
The only Runecrafting bot you will need Purchase this INSANE bot here You can setup a master account (preferably your main account, can be any account) and a worker account (a throwaway bot account, or any account) will trade the master account and go to bank to get more runes etc. The main account (master) does not need to bot, and can be achieved through the normal RS client without a bot client. Supports: Air runes (1) (normal) & (abyss) Mind runes (2) (normal) & (abyss) Water runes (5) (normal) & (abyss) Earth runes (9) (normal) & (abyss) Mud runes (13) (earth altar) Lava runes (23) (fire altar) Fire runes (14) (normal) & (abyss) Body runes (20) (normal) & (abyss) Cosmic runes (27) (normal) & (abyss) Chaos runes (35) (normal) & (abyss) Astral runes (40) (normal) & (abyss) Nature runes (44) (normal) & (abyss) Law runes (54) (normal) & (abyss) Blood runes (abyss) & (zeah) Auto Arceuus Favour Solver Gets 100% arceuus favour for you Auto GE Restocking Sells runes, buys more supplies automatically Auto-equips chosen armour/robes Use Blood Essences Death Handler gets items from Death's office and repeats (Abyss) Glory mode, ferox mode, house spell/tabs Avoids pkers and hops worlds Uses mouse invokes for quicker runecrafting (stealth) Muling (BETA) will give money to your mules every X hours or profit Creates colossal pouch if you have the needle Results and screenshots1 point
-
- Amethyst ore crafting also supported - Prioritises use-item on items in inventory that are closest to one another - Stops script when you run out of materials (if you decide not to restock at GE) Gallery1 point
-
1 point
-
CURRENT RECORD: 201 HOURS RUNTIME NEW: Sandstone mining + hopper support Humidify/water circlet/bandit unnote Ardy cloak tele support Setup Screen Preview Results 84 HOURS ON NEW LEVEL 20 ACCOUNT Suicided account with mirror mode near rock crabs, 81 mining! I will probably go for 99 Even supports Ancient Essence Crystal mining! Preview: Mine 1 drop 1 item drop pre-hover feature:1 point
-
Results Instructions There are no instructions. We do the all the work for you. CzarScriptingâ„¢ Tips Make sure to set food in your setup window! Don't bot more than 12 hours a day! It's not humanlike! Features - All locations supported, including Crab Claw Isle - Banking support - All combat types supported (ranged, all ammo + ranging types, including looting) - Activity Slider -- choose 4 different activity settings from: (Afk my position, Afk any generated position, Attack visible/active crabs only, Full activity/attack all) - Aggression Slider -- choose from 4 different aggression settings: (Only retaliate to crabs, Attack people's crabs when none are found, Attack all crabs, ONLY attack other people's crabs) - Tasked levelling - allows you to set level goals and switch attack styles to raise different skills, e.g. set goals to 50 70 70, from current stats 44 51 55, it will reach the goal stats. - Skill Priority: you can choose in which order to raise the stats, e.g. lowest first, nearest to goal first, top->bottom, bottom->top, level-up evenly, etc. - Customized Stop Conditions: stop script when a certain condition is met, e.g. reached goal stats, killed X crabs, time passed, ran out of equipment, items, etc. - Simple (on user's side) inventory layout chooser consistent with all my scripts -> 1 button copies inventory layout and saves it - World hop support, with player count chooser -- World hop customization: allows you to choose which tile to hop worlds from -- Break tile chooser: allows you to choose which tile to break on, ~3 minutes before breaks trigger - 'Non-botting' mode (very popular): allows you to afk the script and technically not bot at all: the script will display jframe popups (and beep) when crabs are no longer aggressive which will prompt the user to manually refresh the crabs by walking up - Item looting, including rare drop table option - Potion support (all potion types) - Crab refreshing by walking out of the region Gallery1 point
-
Want to buy with OSGP? Contact me on Discord! Detailed feature list: - Supports all Normal and Lunar tablets - Supports all lecterns - Multiple Banking-butler methods Rimmington - Unnote clay Edgeville banking - Mounted glory Castle wars banking - Ring of dueling Butler (Advised option for max profits) Demon butler (Note when using butler, have Noted soft clay and coins in your inventory) - When NOT using a butler Use a friends house by name Use the advertisement house Use your own house - Worldhopper - CLI support for goldfarmers Custom Breakmanager: - Setup Bot and break times - Randomize your break times - Stop script on certain conditions (Stop on first break, Stop after X amount of minutes, Stop when skill level is reached) - Worldhopping - Crucial part to botting in 2023! Script queueing: - Support queueing multiple script in a row - All Khal scripts support flawless transitions in between scripts - Start creating your acc in a few clicks from scratch to multiple 99's - Flawless CLI support - Learn more here: How to use CLI parameters: - Example Usage: -script 671:ScriptFile.BreakFile.DiscordFile SAVEFILE = Saved Filename BREAKFILE = Breakmanager Filename - SAVEFILE: Save file can be created in the GUI. Navigate to the tab you want to run and press "Save As CLI file". Please choose your filename wisely (No special characters) - BREAKFILE (Optional): Breakfile can also be create in the GUI, set the breaksettings you wish to use and press "Save new CLI BreakFile". Please choose your filename wisely (No special characters) - Final form (Note that with some bot managers you do not need to specify -script 671): -script 671:TaskList1.4515breaks (With breaks) -script 671:TaskList1.4515breaks.discord1 (With breaks & discord) -script 671:TaskList1..discord1 (NO breaks & discord)1 point
-
Molly's Tanner This script tans hides at Al Kharid for gold. Buy HERE Requirements: None! Features: - Hopping out of bot worlds - Stamina potion usage, the bot will use one dose prior to each run -Tans cowhides, and all dragon hides Setup: Start at Al Kharid, have coins and hides in bank and let it do work! CLI Setup: The script portion of your .bat file should be setup as followed: -script 839:Antiprofile--Potion--Hide Replace Antiprofile with "On" or "Off", replace Potion with "Stamina", "Energy" or "None". Replace Hide with one of the following: "Soft", "Hard", "Green", "Blue", "Red", "Black". Proggies:1 point
-
So because sir puggers made a new video I have gotten a lot of people asking for the mutli box. You can contact me with a personal message or on discord inept#0327 [254157948585115650] https://osbot.org/forum/topic/162117-multiboxer-public-release/ This project is done for. Outcomes: Basic multi boxer works alot better then i thought it would. Sold the Verbose mode code to some who wants to use it to make questing bots. Ge mercher works great just need to glue my gui to it. [OG Post] This is my first project that I would like to release to the public. To learn the api of this bot I made a multi-boxer with 2 modes, 1 to 1 and verbose. 1 to 1 is legit how it sounds if you click the bot will click in the same spot on all acounts good for bank standing tasks(when it sets up all bots will be faced the same way and walked to the same square whit all setting changed to the same as the master accounts). Places this can be used blast furnace, low population banks, ge merching, opening rune and feather packs. Verbose is still in pre pre pre beta. It has a master bot with slaves on a 1-3 second delay(try to get this to under 200 ms). What does verbose mean? If you trade a shop keeper on one account(master) it will not be in the same place on a different world(a slave account). Hopefull the verbose mode will take care of this By using the Api for interfaces,bank and walking. Atm I have able to do bank standing skills at any where in runescape off of 1 master account with the bank being in any order. I am running a beta if you would like to test it. All I ask is if I get my debuging mode to work is you give me the file it outputs and tell me any possible features you would like and fill out a little survey . **I don't have vip so I cant prove that I does the same thing on all acounts** (bad qulaty video) In this video you can see that the user input is off but when you click on the canvas the bot will uses the Api to move the mouse and click at that spot on all accounts using this bot. I hope with the video you can get the jest of how it works.1 point
-
1 point
-
1 point
-
wanted to show my new project with alredy 300m made with mouse recorder but dont know...1 point
-
You need to chill my dude not sure if satire or not, but stupid idea to bot on your main. You only have yourself to blame1 point
-
1 point
-
1 point
-
thank you! will run for a bit. i have the intentions of buying the script but thought id try it first!1 point
-
Instead of using currentAction as integer, use enum. You could extract every step into other class which implements interface A and in enum parameter set implementation of this interface for example: interface Action{ void doThing(); } class A implements Action{ public void doThing(){...} } class B implements Action{ public void doThing(){...} } enum ActionType{ BANK(new A()), FOO(new B())... @Getter private final Action action; } use private final static variables instad of private final1 point
-
1 point
-
1 point
-
lol why on earth would you test run a script on your main Also any chance of me getting a trial?1 point
-
you should start with like $50 then increase when you have rep...until like $100 easily1 point
-
1 point
-
This is a botting forum, not a on demand service Version 2 is coming out soon so project is probably busy1 point
-
Done activated enjoy free trials Also guys, please turn off filtered game messages when botting, so the bot knows that it's made a potion. This is especially useful for combat potions noted earlier in the thread a few pages back. Please confirm how it works, I will be doing some testing in the meantime. I am still working on the update for tasked mode improvements, I will try get that update pushed as soon as I can.1 point
-
1 point
-
not op but 1 runs in both 2 i was told "use best" or "most profitable" was only for restocking, which is not currently enabled 3 they are not 4 no, it will not. if you pick herb runs at level 1farming, it will get stuck trying to withdraw seeds for your level -- regardless of whether or not "highest level" or "most profitable" is checked. minimum level for herbs is 9, so i would suggest doing potatoes until 9 then you can do herb, flower and vegetable patches no problem. 5 only works with regular teletabs (camelot, falador, etc) cannot use runes to teleport -- this is as far as i know since i don't have a portal nexus.1 point
-
1 point
-
1 point
-
About: This is a Java Class + PHP & MySQL website I wrote in order to save user data to your database for tracking purposes. I'll explain the files first, then you may view them below the explanation. Also, included at the very end is an example SQL file required to complete this project. Usage (OSB Script): First, in order to call the Class, you need to use the code below. I use it in the onExit function log("Saving your runtime data."); String updateUser = SaveUserData.saveUserDataMethod(accessKey, authToken, scriptName, username, startTime, String.valueOf(xpGained), String.valueOf(levelsGained), String.valueOf(fishCaught), String.valueOf(profit)); if (updateUser.equals("success")) { log("We have successfully updated your account statistics online."); } else { log(updateUser); } SaveUserData Class Call Function: I tried converting the values of the String.valueOf variables in the class itself, or ignoring it, but it was failing to execute properly. In any case, you must send the following 4 variables at a minimum in order to know where to send the statistic data. Other than that, the calling script here checks the response of the website to let the user know, via the log, if their data has been saved or not. This is called in my onExit function. Required Data: accessKey A randomly generated and encrypted key used to validate the script (mostly used just to prevent the PHP page from being access from a browser). This is generally a key that you could use for all your scripts. This is a global variable. authToken A randomly generated and encrypted key used to validate the script (mostly used just to prevent the PHP page from being access from a browser). This is a unique authentication token for each script. This is a global variable. scriptName This is the name of your script that will be saved in the database. NOTE: I used this variable in the URL of my Java class, so if you intend of doing that as well, make sure that it is the same value for the actual URL. This is a global variable. username This is the user's account name which will be the unique identified that is used to save the data. This is set in the onStart function. Statistical Data: startTime This is used to calculate the runtime of the script. This is set in the onStart function. xpGained Can be coded in however you like, but it should be a global variable. This is updated in my onPaint function. levelsGained Can be coded in however you like, but it should be a global variable. This is updated in my onPaint function. fishCaught Can be coded in however you like, but it should be a global variable. This is updated in my onPaint function. profit Can be coded in however you like, but it should be a global variable. This is updated in the onMessage function, since this came from a fishing script. SaveUserDataMethod (Java Class): As I previously mentioned, the variable scriptName is utilized in my URL as a means of shortening the amount of things I must change between scripts (since I've only just started scripting and plan on making more). Keep that in mind if you decide to utilize it, and when you're making your file tree if you do. The website returns a JSON response in the format below. Instead of handling the data with a JSON parser, since I know the data has two defined results, I parse it as a regular string instead. I then return to the main function either a value of success or the error message. On Success: success true On Failure: success false message Message based on the event that caused the failure. index.php (PHP File): This file includes the config, database, and encryption files. I have provided these with the exception of the encryption file. You may encrypt your data however you'd like. The file returns a JSON result as described in the SaveUserDataMethod above. Please note that the database file MUST be included after the config file. See the database.php section below. File Handling: The file first checks to insure the accessKey, authToken, scriptName, username, and other required variables are available to read before continuing. After that, we set up our local variables. We then check to make sure the accessKey and authToken sent match the ones defined in the config. Again, I use my own encryption class. You may use your own class to encrypt and decrypt this data. The accessKey validation is setup like this: $encryption->decrypt256Bit($_REQUEST["accessKey"] == $encryption->decrypt256Bit($scriptAccessKey[$scriptName]) NOTE: $scriptAccessKey[$scriptName] scriptAccessKey is an array defined in the config, and its value is grabbed by using the scriptName as the key. The authToken validation is setup like this: $encryption->decrypt256Bit($_REQUEST["accessKey"] == $encryption->decrypt256Bit($scriptAccessKey[$scriptName]) NOTE: $scriptAuthToken[$scriptName] scriptAuthToken is an array defined in the config, and its value is grabbed by using the scriptName as the key. We then just check to make sure the scriptName is the correct one for the data trying to be saved. Again, this is more for preventing users from access the page outside of the client. We then initiate the database class. See below for usage. We then check to see if the user already has data saved under the specified username for the specified script. Required variables scriptName username If the query executes, then we perform another check: Is there one row or two? The query will generally always execute, unless you have a database error, but I always check to insure it executes before I continue. If there is already a user, then we update their information. If the user does not exist, then we insert their information. Both update and insert utilize the same variables. Required variables username Statistical Variables runtime xpGained levelsGained profit If the insert or update query is successful, then we update another table which is used for tracking all of the skill experience gained and levels gained. This is not required, and if you intend on not using this, you should remove the following code: $db->beginTransaction(); $db->endTransaction(); $db->cancelTransaction(); Those lines are not required in updating 1 table, however, if updating multiple tables, like I am, they should be used. Why are they used? Say you have 5 queries that need to be executed, and they're all tied to each other in terms of information. If one of the queries fails, you don't want the other 4 to execute. Well, these functions allow us to roll back the data in a previously executed query should one of the queries fail. Finally, if the second table update is complete, we change the commit variable to true. Commit variable states true We end the database transaction which completes the update. false We cancel the database transaction which un-does any queries that executed successfully. We then return any error message that indicates a failure to update the user's information. The returnArray is then displayed on the page for the SaveUserDataMethod functionto process. database.php (PHP Class File): This file is a class which I utilize in projects to make process database queries much easier. Be it noted that the config file MUST be included before this one in the main PHP handling file because this file sets global variables that are defined in the config file. I'm not going to go into too much detail with this file; you can read up about PHP and PDO methods online if you wish. However, I will make one thing clear. Variable Names: host This is defined as DB_HOST which is defined in the config file. dbhname This is defined as DB_NAME which is defined in the config file. user This is defined as DB_USERNAME which is defined in the config file. pass This is defined as DB_PASSWORD which is defined in the config file. config.php (PHP File): This file is a configuration file I utilize to set up constant and global values. Typically used for things such as the database setup, among other things. Variable Names: DB_HOST This is the hostname used to access your SQL database, typically MySQL if using a website. DB_NAME This is the database name you're trying to connect to which stores the tables for the data to be saved in. DB_USERNAME This is the username that has access rights to DB_NAME. DB_PASSWORD This is the password for DB_USERNAME on DB_NAME. availableScripts This is utilized in my online users function used in my scripts, but it can be used for other purposes as well. It declares the script names available. scriptAccessKey This is an array that holds a key value pair of the access keys authorized. Format as follows: Key The script name Value A randomly generated, encrypted, key utilized to authorize access to the PHP file (index.php in this case). This must match with the value sent from the OSB client. scriptAuthToken This is an array that holds a key value pair of the authorization tokens authorized. Format as follows: Key The script name Value A randomly generated, encrypted, key utilized to authorize access to the PHP file (index.php in this case). This must match with the value sent from the OSB client. Java Class import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; class SaveUserData { public static String saveUserDataMethod(String accessKey, String authToken, String scriptName, String username, long startTime, String xpGained, String levelsGained, String fishCaught, String profit) { String returnedValue = "Saving your data failed. Unknown reason."; try { // open a connection to the site StringBuilder sb = new StringBuilder("https://www.mmaengineer.com/app/osb/" + scriptName + "/index.php?accessKey="); sb.append(accessKey); sb.append("&authToken=" + authToken); sb.append("&scriptName=" + scriptName); sb.append("&username=" + username); sb.append("&runtime=" + (System.currentTimeMillis() - startTime)); sb.append("&xpGained=" + xpGained); sb.append("&levelsGained=" + levelsGained); sb.append("&fishCaught=" + fishCaught); sb.append("&profit=" + profit); InputStream inputStream = new URL(sb.toString()).openStream(); InputStreamReader inputStreamReader = new InputStreamReader(inputStream); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String line; String newString = null; while ((line = bufferedReader.readLine()) != null) { if (line.contains("{")) { sb = new StringBuilder(line); //Remove { and } sb.deleteCharAt(0); newString = sb.substring(0, sb.length()-1); } } newString = newString.replace("\"", ""); if (newString.equals("success:true")) { returnedValue = "success"; } else { String[] returned = newString.split("message:"); returnedValue = returned[1]; } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return returnedValue; } } index.php <?php require_once "../config.php"; require_once "../database.php"; require_once "../encryption.php"; $encryption = new encryption(); $returnArray["success"] = false; if (isset($_REQUEST["accessKey"], $_REQUEST["authToken"], $_REQUEST["scriptName"], $_REQUEST["username"], $_REQUEST["runtime"], $_REQUEST["xpGained"], $_REQUEST["levelsGained"], $_REQUEST["fishCaught"], $_REQUEST["profit"])) { $scriptName = $_REQUEST["scriptName"]; $username = $_REQUEST["username"]; $runtime = ($_REQUEST["runtime"] / 1000); $xpGained = $_REQUEST["xpGained"]; $levelsGained = $_REQUEST["levelsGained"]; $fishCaught = $_REQUEST["fishCaught"]; $profit = $_REQUEST["profit"]; if (($encryption->decrypt256Bit($_REQUEST["accessKey"]) == $encryption->decrypt256Bit($scriptAccessKey[$scriptName])) && ($encryption->decrypt256Bit($_REQUEST["authToken"]) == $encryption->decrypt256Bit($scriptAuthToken[$scriptName]))) { if ($scriptName == "engineerFishing") { $db = new database(); $commit = false; $db->query("SELECT `id` FROM `engineerFishing` WHERE `username` = :username"); $db->bind(":username", $username); if ($db->execute()) { $rows = $db->rowCount(); $db->beginTransaction(); if ($rows == 1) { $db->query("UPDATE `engineerFishing` SET `runtime` = runtime+:runtime, `xp_gained` = xp_gained+:xp_gained, `levels_gained` = levels_gained+:levels_gained, `fish_caught` = fish_caught+:fish_caught, `profit` = profit+:profit WHERE `username` = :username"); } else { $db->query("INSERT INTO `engineerFishing` (`id`, `username`, `runtime`, `xp_gained`, `levels_gained`, `fish_caught`, `profit`) VALUES(0, :username, :runtime, :xp_gained, :levels_gained, :fish_caught, :profit)"); } $db->bind(":username", $username); $db->bind(":runtime", $runtime); $db->bind(":xp_gained", $xpGained); $db->bind(":levels_gained", $levelsGained); $db->bind(":fish_caught", $fishCaught); $db->bind(":profit", $profit); if ($db->execute()) { $db->query("UPDATE `skills` SET `fishing_xp` = fishing_xp+:fishing_xp, `fishing_levels` = fishing_levels+:fishing_levels WHERE `id` = 1"); $db->bind(":fishing_xp", $xpGained); $db->bind(":fishing_levels", $levelsGained); if ($db->execute()) { $commit = true; } } if ($commit) { $returnArray["success"] = true; $db->endTransaction(); } else { $returnArray["message"] = "Failed to save your data for the Engineer Fishing script."; $db->cancelTransaction(); } } else { $returnArray["message"] = "Failed to access our database to save your data for the Engineer Fishing script."; } } else { $returnArray["message"] = "The script you are trying to save your data to does not match our database."; } } else { $returnArray["message"] = "Bad access key or authorization token for utilizing the online users function."; } } else { $returnArray["access"] = "We did not receive all of the parameters to save your data for the Engineer Fishing script."; } echo json_encode($returnArray); ?> database.php <?php if (count(get_included_files()) <= 1) { exit; } class database { private $host = DB_HOST; private $dbhname = DB_NAME; private $user = DB_USERNAME; private $pass = DB_PASSWORD; private $dbh; private $stmt; private $error; public function __construct() { // Set Connection $con = 'mysql:host=' . $this->host . ';dbname=' . $this->dbhname; // Set options // If you want to display errors, use the following values // true // ERRMODE_EXCEPTION $options = array( PDO::ATTR_PERSISTENT => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT ); // Create a new PDO instanace try { $this->dbh = new PDO($con, $this->user, $this->pass, $options); } catch(PDOException $e) { $this->error = $e->getMessage(); } } public function query($query) { $this->stmt = $this->dbh->prepare($query); } public function bind($param, $value, $type = null) { if (is_null($type)) { switch (true) { case is_int($value): $type = PDO::PARAM_INT; break; case is_bool($value): $type = PDO::PARAM_BOOL; break; case is_null($value): $type = PDO::PARAM_NULL; break; default: $type = PDO::PARAM_STR; } } $this->stmt->bindValue($param, $value, $type); } public function execute() { return $this->stmt->execute(); } public function resultSet() { $this->execute(); return $this->stmt->fetchAll(PDO::FETCH_ASSOC); } public function single() { $this->execute(); return $this->stmt->fetch(PDO::FETCH_ASSOC); } public function rowCount() { return $this->stmt->rowCount(); } public function lastInsertId() { return $this->dbh->lastInsertId(); } public function beginTransaction() { return $this->dbh->beginTransaction(); } public function endTransaction() { return $this->dbh->commit(); } public function cancelTransaction() { return $this->dbh->rollBack(); } public function debugDumpParams() { return $this->stmt->debugDumpParams(); } } ?> config.php <?php define("DB_HOST", "localhost"); define("DB_NAME", "databaseName"); define("DB_USERNAME", "databaseUsername"); define("DB_PASSWORD", "databasePassword"); $availableScripts = array( 1 => "testPlatform", 2 => "engineerFishing", 3 => "engineerPickpocket" ); $scriptAccessKey = array( "testPlatform" => "scriptAccessKey", "engineerFishing" => "scriptAccessKey", "engineerPickpocket" => "scriptAccessKey" ); $scriptAuthToken = array( "testPlatform" => "scriptAuthToken", "engineerFishing" => "scriptAuthToken", "engineerPickpocket" => "scriptAuthToken" ); ?> engineerFishing.sql -- -- Table structure for table `engineerFishing` -- CREATE TABLE `engineerFishing` ( `id` int(8) NOT NULL, `username` varchar(100) NOT NULL, `runtime` bigint(35) NOT NULL, `xp_gained` bigint(35) NOT NULL, `levels_gained` int(8) NOT NULL, `fish_caught` int(8) NOT NULL, `profit` bigint(35) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Indexes for dumped tables -- -- -- Indexes for table `engineerFishing` -- ALTER TABLE `engineerFishing` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `username` (`username`); -- -- AUTO_INCREMENT for dumped tables -- -- -- AUTO_INCREMENT for table `engineerFishing` -- ALTER TABLE `engineerFishing` MODIFY `id` int(8) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1; skills.sql -- -- Table structure for table `skills` -- CREATE TABLE `skills` ( `id` int(8) NOT NULL, `agility_xp` bigint(35) NOT NULL, `agility_levels` int(8) NOT NULL, `attack_xp` bigint(35) NOT NULL, `attack_levels` int(8) NOT NULL, `construction_xp` bigint(35) NOT NULL, `construction_levels` int(8) NOT NULL, `cooking_xp` bigint(35) NOT NULL, `cooking_levels` int(8) NOT NULL, `crafting_xp` bigint(35) NOT NULL, `crafting_levels` int(8) NOT NULL, `defense_xp` bigint(35) NOT NULL, `defense_levels` int(8) NOT NULL, `farming_xp` bigint(35) NOT NULL, `farming_levels` int(8) NOT NULL, `firemaking_xp` bigint(35) NOT NULL, `firemaking_levels` int(8) NOT NULL, `fishing_xp` bigint(35) NOT NULL, `fishing_levels` int(8) NOT NULL, `fletching_xp` bigint(35) NOT NULL, `fletching_levels` int(8) NOT NULL, `herblore_xp` bigint(35) NOT NULL, `herblore_levels` int(8) NOT NULL, `hitpoints_xp` bigint(35) NOT NULL, `hitpoints_levels` int(8) NOT NULL, `hunter_xp` bigint(35) NOT NULL, `hunter_levels` int(8) NOT NULL, `magic_xp` bigint(35) NOT NULL, `magic_levels` int(8) NOT NULL, `mining_xp` bigint(35) NOT NULL, `mining_levels` int(8) NOT NULL, `prayer_xp` bigint(35) NOT NULL, `prayer_levels` int(8) NOT NULL, `ranged_xp` bigint(35) NOT NULL, `ranged_levels` int(8) NOT NULL, `slayer_xp` bigint(35) NOT NULL, `slayer_levels` int(8) NOT NULL, `smithing_xp` bigint(35) NOT NULL, `smithing_levels` int(8) NOT NULL, `strength_xp` bigint(35) NOT NULL, `strength_levels` int(8) NOT NULL, `thieving_xp` bigint(35) NOT NULL, `thieving_levels` int(8) NOT NULL, `woodcutting_xp` bigint(35) NOT NULL, `woodcutting_levels` int(8) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Indexes for dumped tables -- -- -- Indexes for table `skills` -- ALTER TABLE `skills` ADD PRIMARY KEY (`id`); -- -- AUTO_INCREMENT for dumped tables -- -- -- AUTO_INCREMENT for table `skills` -- ALTER TABLE `skills` MODIFY `id` int(8) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1;1 point
-
Using the trial now, seems awesome. One thing that wasn't so awesome is when it ran out of special energy it continuously switches between the inventory and spec tab over and over. Edit: Just noticed the guy above me had the same issues. Tried restarting but still does the same thing. I'll just have to use it without spec for now. Awesome script, will be purchasing.0 points
-
got banned on 2 of my accs. hoping to appeal and get them back. was running on mirror mode. one of my accs was my staker... legit only did 3 quests and stopped. then banned the next morning. should i only use stealth injection for this script next time?0 points
-
And banned didn’t think I ran it too much, couldn’t get it to do more than one dream at a time with a break so I never ran one than more at a time. Was the only bot I was using as well0 points
-
giving monkey madness a shot right now! Finished flawlsesly in an hour flat! edit: woke up the next morning with a 2 day ban, this is fine though since I botted all but 2 quests (holy grail and what lies below) in the span of 48 hours. A nice head start on the new zerker, even if I have to take a 2 day vacation.0 points
-
It ran like complete garbage on witches potion today and then got banned. Like it would run a little then stop, then he would walk some more, pause...until it got to experiment and next thing I know its disabled -_- I will try one more go on another account later. Ive owned this script for a long damn time - but just now getting back into botting. Could very well be my fault0 points
-
0 points
-
purchased this bot last night, used it on my alt. woke up, couple hours later the bot had not collected much fungus and was clicking at the gate. alt and main perm banned, used bot for less than 6 hours zzz, bye bye to my 10 year account. anyway can i get refund on this bot since i quit rs due to this.0 points