Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 06/01/20 in all areas

  1. 4 points
    Update: thank you all for choosing CzarScripts, you have made these scripts the #1 most selling script series on the entire market! ♔ LATEST SCRIPTS ♔ Script IDs for CLI (Command-Line Interface mode) 1042 Perfect Crafting complete If you want a trial - just post the script name and it will be activated after I hit 'like' on your post Requirements hit 'like' on this thread
  2. 3 points
    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. 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.
  4. 2 points
    Khal Mort Myre Fungus Main Bot Features Multiple Locations Position Switching WorldHopping Graveyard Teleport Tab/Runes 10HP + Death support Humanlike Idles Custom Breakmanager Easy 400-500k/h Without Effort Buy This Mort Myre Bot Here! Want to buy with OSGP? Contact me on Discord! Features: - Picks Fungus in a smart way - Hops worlds when both positions are crashed - Multiple ways of travelling (Low reqs with CW and Graveyard tab) - Smart pickups, always read to bloom right away - Double spot selection - Avoid players when the crash your spot - Advanced scripting structure, 99.99% flawless scripting - A clean and easy interface to start and track the script. - Randomized pathing system, humanlike paths, no repetitive clicking. - Script will never idle, start script and let it run forever! Antiban / Anti-pattern: - Randomized clicking positions - Random actions to break the pattern - Pathing is always random and close to human behaviour - Random/dynamic sleep times for humanlike interactions Requirements: - Nature Spirit up to Silver Sickle (b) - SIlver Sickle (b) - Prayer level above 45 recommended( 50-50 is the most efficient) Frequently asked questions (FAQ): Q: Where can we find this script? A: This can be found at the store here Q: How and where do I start this script? A: Simply start the script inside the game or outside at the bank Proggies: CLI Options: Bug report Template: - Mirror or regular client? - Explain the situation - Printscreen with the Osbot console enabled and script paint when getting stuck. Script Trials: - A 24h trial is available for this script. Like the page and you may request one here or on my trial topic!
  5. 1 point
    Damn those are amazing gains! Congrats
  6. 1 point
    Upcoming NPCs: Green Dragons NOT SUPPORTED!, ROCK CRABS, SAND CRABS, AMMONITE CRABS Added! RUNE DRAGONS JUST ADDED, GET IN THAT SWEET 2-3m/hr! Want to buy with OSRS GP? Buy a store voucher here! And this sweet drop while testing the script for update v254.0... 52 HOUR RESULT! 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! 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.
  7. 1 point
    Do itttt. Enjoyed following this previous one
  8. 1 point
    Buy now (only $4.99!) by Czar Want to buy the bot, but only have rs gp? Buy an OSBot voucher here Proggies: 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 Coming soon: Anti-Crash detection (still need to pump out beta version) Gallery:
  9. 1 point
    wanted to show my new project with alredy 300m made with mouse recorder but dont know...
  10. 1 point
    Buy now (only $8.99!) by Czar Want to buy the bot, but only have rs gp? Buy an OSBot voucher here #1 MOST POPULAR FISHER thank you all for making this bot the most successful fisher on the market, from 2015 to 2020!!!! update: this bot is now featured on the front page of osbot! More reviews than every other fishing bot combined! https://osbot.org/forum/store/category/13-fishing-cooking/ Instructions There are no instructions. We do the all the work for you. CzarScripting™ Tips Make sure to have your fishing equipment on you (fishing net, harpoon etc) Don't bot more than 12 hours a day! It's not humanlike! Gallery 100 hour progress report!!!
  11. 1 point
    This bot has almost every thieving style except blackjack, ask for a free trial by liking thread or making a post! 'the intelligent choice' by Czar 99 THIEVING MANY MANY TIMES, 35M EXP IN ONE BOTTING RUN !! 11.5 HOURS, WITH PET TOO!! 610k/hr getting 99s on deadman worlds! 72 HOUR PROGRESS REPORT ! THIEVING PET AT LVL 22 FROM TEA STALLS Want to buy the bot, but only have rs gp? Buy an OSBot voucher here Just got 99 proggy! Gratz to @iz0n
  12. 1 point
    by Czar Link Buy here (only $8.99!) pay once, enjoy unlimited, forever! no time limit! http://osbot.org/forum/store/product/505-perfect-chopper/ Old thread (long) Clean paint and GUI Want to chop willows in Draynor? Select it from the GUI Want to chop magic trees in a secret location? Select custom area in the map! Everything is automatically detected like a real robot. We do all the work for you. Interactive World Map There are three types of setup you can choose from; - Use pre-loaded locations from the list - Manually click on a tree to save it - Choose your own woodcutting area from the interactive world map If you want to chop willows at draynor, you can just select the list, however if you want to chop trees in the middle of falador (where nobody is) you can open the world map by clicking 'custom' on the GUI, then select the area where you want to woodcut. All you need to do is highlight the area with your mouse by dragging it. Very simple. Gallery
  13. 1 point
    Only $4.99 lifetime! Pay once and enjoy forever! Setup Screens Smithing Mode Progress Reports
  14. 1 point
    'the intelligent choice' By @Czar BUY HERE (ONLY $8.99) Want to buy the bot, but only have rs gp? Buy an OSBot voucher here 81 HOUR PROGRESS ON A LEVEL 20 ACCOUNT Suicided account with mirror mode near rock crabs, 81 mining! I will probably go for 99 Mine 1 drop 1 item drop pre-hover feature: (it's faster in the actual update)
  15. 1 point
    Main Script Features - Supports EVERY rune except Bloods - Ring of dueling mode for fire runes - Lava AND Mud Runecrafting, with binding necklace and magic imbue - ZMI/Ourania altar fully supported! - Abyss Runecrafting - Pouches, pouch repair, NPC contact, Abyss repair - Added humanlike repair at X randomised trips, to prevent pouches from degrading! - All energy restore potions (Stamina, Super energy, energy) supported! - Glories and house tabs - POH Jewellery box teleports supported! - Food during banking trip - Master/worker mode for no botting on your main! - Nature rune running, with multiple paths (^ either choose the safe/long path, or the quicker/dangerous path ^) - Quest Cape teleport support! - Moonclan teleport support for Astrals! - Teleport to Ourania method for ZMI First, and only bot that really has master/worker mode! Master/Worker mode 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. Results and screenshots Ring of Dueling (lavas)
  16. 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 blame
  17. 1 point
    Khal Tabmaker (All in One) Thanks to all of you, This is now the [Best] and most [Complete] Tabmaker bot! Main Bot Features All Tabs All Lecterns Use Advertisement House Use Own house or Friends House 6 ways to Bank/Unnote Humanlike Idles Custom Breakmanager Buy This Tabmaker Bot Here! Want to buy with OSGP? Contact me on Discord! Features: - Supports every Teleport tab - Supports both butler and demon butler - Supports the use of Hosts house + Unnoting - Unnoting clay at rimmington - Banking with mounted glory, walking in yanille or Ring of duelling to Castle wars. - Advanced scripting structure, 99.99% flawless scripting - A clean and easy interface to start and track the script. - Custom webwalking using A* pathfinding algorithm - Randomized pathing system, humanlike paths, no repetitive clicking. - Script will never idle, start script and let it run forever! Antiban / Anti-pattern: - Randomized clicking positions - Random actions to break the pattern - Pathing is always random and close to human behaviour - Random/dynamic sleep times for humanlike interactions Frequently asked questions (FAQ): Q: Where can we find this script? A: This can be found at the store here Q: How and where do I start this script? A: Simply start the script in your house (butler) or in the bank. Q: Script tries to call butler even when not needed? A: Make sure the doors are disabled (House settings => hide the doors) Q: The bot keeps clicking the demon butler or keeps banking? A: Make sure you got all the supplies in your inventory. if the option states you need a certain staff (lava) don't use a smoke staff or something else. The script uses this to decide when to logout when you run out of supplies. If you have any issues setting this up, contact me on skype (khaleesi.bot) CLI Options: Want to purchase using OS/RSGP? Click here! Proggies: Bug report Template: - Mirror or regular client? - What banking method? - Printscreen with the Osbot console enabled and script paint when getting stuck. Script Trials: - A 24h trial is available for this script. Like the page and you may request one here or on my trial topic! Dynamic signatures: Insert an image into you signature with the folowing link: (Make sure to insert your name at the end) http://khal-scripts.com/signatures/khaltabs/signature.png?user=
  18. 1 point
  19. 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:
  20. 1 point
  21. 1 point
    thank you! will run for a bit. i have the intentions of buying the script but thought id try it first!
  22. 1 point
    Price: only $5.99! Gallery Script going to GE to restock on sapphires and gold bars to make sapphire rings for profit. I set the GE target to 300 supplies and the script identified and went ahead to GE nicely Even POTTERY is supported.. Such detail has been taken into account for this script, it's unreal.. Both shaping clay and firing clay, and either/or. Spiky vambraces being crafted via using kebbit claws on vambraces. All leathers supported! Progress Reports
  23. 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 final
  24. 1 point
  25. 1 point
  26. 1 point
    Only doing 24h Sir, Enjoy!
  27. 1 point
    lol why on earth would you test run a script on your main Also any chance of me getting a trial?
  28. 1 point
    you should start with like $50 then increase when you have rep...until like $100 easily
  29. 1 point
  30. 1 point
    This is a botting forum, not a on demand service Version 2 is coming out soon so project is probably busy
  31. 1 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.
  32. 1 point
    Used today and did quite some quests smoothly. Hoping he can add even more quests
  33. 1 point
  34. 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.
  35. 1 point
    Should be good now, was an OSBot script service issue.
  36. 1 point
  37. 1 point
    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.
  38. 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;
  39. 0 points
    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.
  40. 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?
  41. 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 well
  42. 0 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.
  43. 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 fault
  44. 0 points
  45. 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.
×
×
  • Create New...