Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 04/29/20 in all areas

  1. 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!
    3 points
  2. thanks a lot, man, honestly. i will certainly look into it. would you kindly point me to a vendor that can sell me it reliably? i honestly still have no idea what it is or how to set it up, i just know that it will give my bot a different IP.
    2 points
  3. Enjoy! YEs it is! Enjoy!
    2 points
  4. CzarScripts #1 Bots LATEST BOTS If you want a trial - just post below with the script name, you can choose multiple too. Requirements Hit 'like' on this thread
    1 point
  5. Want to buy with OSGP? Contact me on Discord! Detailed feature list: - Supports banking at 99% of the locations - Task based setup (1-99) - Supports every fish (Shrimps, sardine, herring, anchovies, mackerel, trout, cod, pike,salmon, tuna, lobster, bass, Leaping trout/salmon/sturgeon, swordfish, monkfish, shark, dark crab, angler fish, sacred eel, infernal eel) - Supports almost every bank location (New ones can be requested) (Lumbridge swamp, Al-Kharid Sea, Draynor, Lumbrdige river, barbarian village, shilo village, Catherby, corsair cove, fishing guild, piscatoris, port piscarilius, karamja, jatizso, seers, gnome stronghold, Lands' end, Zul andra, Mor Ul rek) - Fish & bank (Preset) - Fish & bank (Custom) supports almost every location - Fish & Drop (Custom) supports every fishing spot - Barbarian fishing (Select leaping fish at fish & drop) - Cook fish when fire is nearby (Fish & Drop Only) - Minnows support - Karambwans + Karambwanji support - Aerial fishing support - Drift net fishing support - Humanlike idles - Dragon harpoon special - Barehand fishing option - Fishing barrel support - Spirit flakes support - Drop clue bottles support - 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 571: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 571): -script 571:TaskList1.4515breaks (With breaks) -script 571:TaskList1.4515breaks.discord1 (With breaks & discord) -script 571:TaskList1..discord1 (NO breaks & discord) Proggies:
    1 point
  6. View in store $4.99 for lifetime access Key Features: Supports Bar smelting, Cannonball making and Item smithing Supports all tradeable bars for both smithing and smelting, with support for material-unique items (full list below) Supports the above activities in all locations you would ever want to perform them (full list below) Smart activity-based framework allows you to schedule tasks to be performed in succession (details below) Simple and intuitive start-up interface hosting the activity editor (Optional) Informative, concise, self-generating, recolourable and movable paint tracks useful run-time data (Optional) On-screen movable console logger to notify you exactly what the script is doing at any point in time Smart Gaussian-distribution derived Make-X value generator supporting letter scalar suffixes (Optional) Moves the mouse outside the game screen while idle Utilises the OSBot map web system with obstacle handling for inter-location traversal* (Optional) Ring of forging support for iron smelting ...and many more! *The OSBot web is very reliable however can occasionally (understandably) struggle with longer inter-location distances. As a result, I would highly recommend supervising the script while inter-location transitions take place. Supported Locations: Supported Bars: Bronze [1x tin ore, 1x copper ore] Iron (with & without Rings of forging) [1x iron ore] Silver [1x silver ore] Steel [1x iron ore, 1x coal ore] Gold [1x gold ore] Mithril [1x mithril ore, 4x coal ore] Adamant [1x adamantite ore, 6x coal ore] Runite [1x runite ore, 8x coal ore] Supported Smithing items: All generic material-independant items (e.g platebodies, knives, dart tips, etc...) Material dependant items: Bronze wire (bronze) Iron spit (iron) Oil lantern frame (iron) Studs (steel) Bullseye lantern (steel) Cannonballs (steel) Mith grapple tip (mithril) Activity based framework: The script features a fully-fledged activity system. This system allows you to completely customise each botting session and tailor it to the needs of your account. The system allows for 'activities' to be queued in sequence, whereby when started, the script will proceed to execute and attempt to fulfill each activity in turn. An activity is comprised of two parts - the task and the target. An example of a task may (arbitrarily) be 'Smelting gold bars at Edgeville' and an example of a target may be 'until level 70 Smithing achieved'. Both the task and the target can be fully customised to your needs, then saved and queued to the session activity manager. Task options: Smelting Bars (in a furnace) Making Cannonballs (in a furnace) Forging items (on an anvil) Target options: ... until out of supplies ... until level λ reached ... until λ experience gained ... until λ minutes passed (where λ is some inputted integer value) It is worth noting that by default all tasks are automatically considered complete if insufficient resources to perform the task are present. Setting up: Example paint: Gallery: Credits:
    1 point
  7. ** $14.99 - 24 hour trials available - like and comment on this thread Don't pm me on OSBot or Discord to ask for a trial. Loot anything, anywhere, with this highly customizable script! PvP worlds, waiting on loot piles, drop parties across Gielinor, even popping balloons in the party room! Buy The Script Here Check out these videos on using Fury AIO Looter to make money! [OSRS] Botting To Ban #7: Looting ! Crazy Profit [OSRS] Botting To Ban #8: F2P Looting FAQs: What does x setting on GUI mean? Look in the GUI spoiler below for a detailed explanation of what each option does. What settings should I use? WHATS THE BEST??? Whatever works for you, try new things until you find something thats good. I made it as customizable as possible for a reason There is no "best" settings before you ask me. lol. If I told everyone the ""best"" settings then everyone would do that and it would no longer be the best. Experiment and see what works for you Where should I run the looter? Anywhere there is loot on the ground. Experiment. See whats making money. Known locations would be GE drop parties in highly populated worlds. PVP worlds in active areas (ge, lumbridge, varrock, etc). ZMI. Wintertodt. Skillers that drop their inventory like barbarian village fishers, rimmington mine iron ore droppers etc. It will even work in the party room to pop balloons GUI: CLI: Discord Server: POGRESS REPORTS:
    1 point
  8. honestly i dont think anyone would just give out what their method is because itll just get crashed best bet is trial and error instead of you spending 80m on 4 accs you can use that 80 to try diffrent things invest it in methods for example now that you have a fighting script get yourself 40ish att/str/def then get mems and try druids for herbs see how that works out youll only invest like 4m into an acc like that stats+bond+equipment you can also try the wine of zammy in f2p and in mems but again this is all just a trial and error i suck at that took me like 2 weeks before i found what im doing now everyone does say p2p is best for botting (youll still get ban just less chance) but my method is working just fine for me in f2p i just have to remake new accs daily which only takes total of 10 mins of my time to set up 4 accs..........sorrr if im jumping around a lot im bad with explaining i just dont want you to start botting in a debt also get vip mirrior mode seems to be working for me before it my accounts wouldnt get past 10hrs of botting now i get 40hrs ech account so im able to pas 20hr gameplay to transfer gold and able to make more gold before getting ban
    1 point
  9. Afaik you can proxy w/o premium. If you can enable it on the proxy tab and add it I don't see a reason as to why you can't use it without premium.
    1 point
  10. The only thing free users can't do that vip or above can is 1. Use mirror mode. 2. Run unlimited clients. (Free users are stuck with 1 client and 2 tabs) 3. No ads on website and client (Free users get ads) There's a few other forum additions you get like signature space increased; Similar shit like that. EDIT: Try looting, it's fairly low on bans and easy to start botting.
    1 point
  11. im sorry buy if youre only making 1.5m a day ech account i personally think thats bad im making 1.2-1.4m per account in f2p right now only thing that sucks is yeah my accounts get ban daily but thats after i transfer money my only overhead is 1 time fee for a $10 script and thats all no bond or no accounts to purchase i think you should just explore rs more and find somthing that will make you better money than what you having going on right now
    1 point
  12. Been working very well since I bought it! Looking forward to getting the 100 nuggets to buy coal bag, then im probably buying your blast furnace script.
    1 point
  13. I might well be. I still have lots to learn about all this. I'm just surprised that accounts are that cheap since I'd expect it to take around 100 hours to train a 70/70/70. But if they can train 100 at once on a single server with CLI and sell them immeadietly, I can see the idea .
    1 point
  14. Ill add that to the list of thing to do
    1 point
  15. Was too impatient mate, bought it after 10 mins of no reply
    1 point
  16. Sure, ill add that in!
    1 point
  17. lol I've used this script for dozens of hours without problems. Sounds more like a you problem than the scripts problem Thanks Chris, sounds good.
    1 point
  18. I'll rearrange my logic to attempt to combat this issue.
    1 point
  19. This shit is actually kind of crazy, renewed VIP solely for this script (with others as a nice bonus I missed as well), the algorithm its based on seems to be nearly flawless and even in places that have common safe spots / even if you set your preferred safe spots there it seems to once in awhile use other spots that visually you wouldn't first go to as a safe spot and IMO makes it seem less bot like from a player perspective. I've had 8 f2p accounts using this and all have above 400k combat XP from profitable methods with no bans as of yet. The GUI and interface to customize the area and preferred safe spots are very easy to use and this gives you the ability to get creative and exploit low traffic areas for stealthy XP.
    1 point
  20. -world (worldhere) -world 327 For reference:
    1 point
  21. Yep I know exactly what you're talking about, i'll see what I can do for that.
    1 point
  22. using CLI is your best bet to run a large amount of accounts https://osbot.org/forum/topic/118831-cli-commands-table/
    1 point
  23. got 99 fishing using this , ty .
    1 point
  24. Searching trough the "store" to look for what scripts would be the best bang for my buck since i wasnt keen on buying 6 different 10$+ scripts -_- Then somewhere all the way in the back of the store i found this baby. First i thought, 25 dollars for a supposed easy scriptmaker? with allmost unlimited restrictions on things you can do or make? HA, no way and 25$ can buy me like 3 good scripts man!!!! Yet being so fascinated by this script and if or not it was a scam, i bought it anyway. Long story short, Best 25 dollars spend ever in my whole existance. This script should be on the market for 100$+!!!!!! If you are buying any other script you are a literal clown.
    1 point
  25. Like I said do what’s best for you. I don’t care if the account gets banned I’ve done this before without any problems. If you care about the account stick to what you’re doing now, bot for as long as you would play legit and if you have played legit then bot for how many hours you would before you break. I haven’t touched the account apart from questing so there isn’t much “data” surrounding the account
    1 point
  26. User has failed to reply and has been banned. If they wish to come back they'll have to pay you back in full. Sorry for your loss.
    1 point
  27. If you're looking to make irl money from botting the likelyhood is you wont. Even more so when you're purchasing accounts/scripts/membership/proxies. You have a lot of overheads and depending on what you plan on botting you can get an answer to some degree as to how long you'll likely last before you're banned. Best of luck though. By the sounds of it you don't really have much idea on how to go about it. So instead of making a farm or buying x amount of accounts. Make a few accounts yourself, bond them and try that before purchasing any accounts.
    1 point
  28. No one really can tell you if it will work or it won't. You need to try yourself, something maybe working for someone using same tools, but having different approach. Regarding proxies it is heavily recommended, the more accounts run on same IP the higher the ban rate tend to be, also they protect you from chain bans.
    1 point
  29. v4 now v5 in the same month? v6 in May/June?
    1 point
  30. great script keep especially that it is free. its so clean
    1 point
  31. I got tired of creating paints for every bot so I decided to created an AIO paint script with the goal of minimizing input needed to customize a paint for a certain script. I also wanted it to be noob-proof and easy to implement into any script. I know I could have used something like this when I first started making scripts. If you use this template in a SDN script, I would appreciate it if you left my signature in the paint. I spent a lot of time creating this topic when I could have easily kept it to myself. Features: Automatically detects exp gain in any skill and adds it to paint (if using a script which does not gain XP, it will automatically hide this window) Displays current lvl, starting lvl, XP gained, XP per hour, % to next level, time to next level, and has a progress bar to next level Automatically self-optimizes window sizes to fit required text based on only two inputs - font size & text padding Displays script name, time ran, current world, and number of current players on map by default Has easy input for custom counters and automatically adds them into paint Hide button to hide paint & Reset button to reset the XP counters Displays big warning indicator when other players use certain keywords (bot,reported,etc..) 10+ Optional color and font settings Demonstration of Paint, Hide, Reset, & Warning Indicator: How to implement into any script: Please follow these directions carefully. Use Spoiler 1 (Script Skeleton) as your guide. This will show where user input is required and where to paste code from other spoilers (indicated by %%%%%%). The default settings of the paint will come out looking like the paint in the video. Spoiler 1 (Script Skeleton) Spoiler 2 (onStart) Spoiler 3 (onPaint) Spoiler 4 (onLoop) Spoiler 5 (Used methods) Spoiler 6 (Additional Variables) Adding Custom Counters: In addition to the default features of the paint, I made it very easy to add in custom counters. You can do this using customInfo settings in the Script Skeleton. They will appear underneath the "Time Ran:" timer. Just add the String you want in the caption and the Variable it is referring to into this Array in the same manner as this example. You have to make sure your counter/state variable is properly initialized and updating information in your onLoop. Make sure to set customInfo=null if you don't want to add anything. Don't just delete it. By default, the counters will not reset when the Reset button is pressed. If you want them to reset, you need to add some code to the MouseEvent in the used methods spoiler. Going along with the example above, this is what you would need to change it to: Font Size & Text Padding: These settings are the only inputs you need to use to control the size of the paint. Below are some pictures of different combinations: baseFontSize=14 & textPadding=5 (Default) baseFontSize=10 & textPadding=1 (the Space Saver) baseFontSize=20 & textPadding=10 (the IDGAF) - You can see this option would actually push the paint out of the bot with the skills paint activated, so this would mean that you need to reduce your size. However, this could be a viable option for bots that don't train XP.
    1 point
  32. 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
  33. bruh this was so depressing looking at when I came back from work
    0 points
  34. Therefore here's the type of message center you would receive for one of those judgement call bans as you have just stated:
    0 points
×
×
  • Create New...