Leaderboard
Popular Content
Showing content with the highest reputation on 09/27/24 in all areas
-
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! 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
-
NEW! Added Grand Exchange auto-restocking! Perfect for goldfarms!! Features Coming Soon: - Deathwalk support - Salamander support - More ironman routes for barrows How to use Bot Manager or Script Queue: Script ID is 1181 Script Parameter is the saved profile name, e.g. hello123.txt1 point
-
This script supports many fish such as shrimp, sharks, anglerfish etc. Start at canafis bank make sure you have the raw fish selected in your bank and it will make runs in between cooking them. package com.dexcooker; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.SwingUtilities; import org.osbot.rs07.api.map.Area; import org.osbot.rs07.api.model.RS2Object; import org.osbot.rs07.api.ui.RS2Widget; import org.osbot.rs07.api.ui.Tab; import org.osbot.rs07.script.Script; import org.osbot.rs07.script.ScriptManifest; import org.osbot.rs07.utility.ConditionalSleep; @ScriptManifest(author = "Dextrell", info = "Cooking Script", name = "DexCooker", version = 1.1, logo = "") public class DexCooker extends Script { private String selectedFish = null; private boolean guiComplete = false; private final Area BANK_AREA = new Area(2806, 3438, 2812, 3441); // Canifis Bank private final Area RANGE_AREA = new Area(2815, 3439, 2817, 3444); // Canifis Range @Override public void onStart() { // Create GUI to select fish SwingUtilities.invokeLater(this::createGUI); } /** * Creates the GUI for selecting the type of fish to cook. */ private void createGUI() { JFrame frame = new JFrame("DexCooker"); JPanel panel = new JPanel(); String[] fishOptions = { "Raw shrimps", "Raw sardine", "Raw herring", "Raw anchovies", "Raw trout", "Raw salmon", "Raw tuna", "Raw lobster", "Raw swordfish", "Raw monkfish", "Raw shark", "Raw anglerfish" }; JComboBox<String> fishSelection = new JComboBox<>(fishOptions); JButton startButton = new JButton("Start Cooking"); startButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { selectedFish = (String) fishSelection.getSelectedItem(); guiComplete = true; frame.dispose(); // Close the GUI after fish is selected } }); panel.add(new JLabel("Select fish to cook:")); panel.add(fishSelection); panel.add(startButton); frame.add(panel); frame.pack(); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.setLocationRelativeTo(null); // Center the frame frame.setVisible(true); } @Override public int onLoop() throws InterruptedException { if (!guiComplete) { return 100; // Wait until GUI is completed } // If the player is in the bank area and doesn't have fish to cook if (BANK_AREA.contains(myPlayer()) && !inventoryContainsRawFish()) { if (!getBank().isOpen()) { getBank().open(); if(getInventory().isFull()) getBank().depositAll(); sleep(1000); } else { if (getBank().contains(getRawFishID())) { getBank().withdrawAll(getRawFishID()); sleep(1000); } else { log("No more fish to cook. Stopping script."); stop(); } getBank().close(); } } // If player is at the range and has raw fish to cook if (RANGE_AREA.contains(myPlayer()) && inventoryContainsRawFish()) { if (!getTabs().isOpen(Tab.INVENTORY)) { getTabs().open(Tab.INVENTORY); sleep(500); } // Ensure the range is available RS2Object range = getObjects().closest("Range"); if (range != null) { if (!range.isVisible()) { getWalking().webWalk(RANGE_AREA); return 600; // Wait a bit after walking } // Interact with the range to start cooking if (range.interact("Cook")) { log("Interacting with the range to cook."); sleep(2000); // Wait for cooking animation to start RS2Widget cookingWidget = getWidgets().get(270, 14, 38); // Wait for the cooking widget to appear if (new ConditionalSleep(500, 1000) { @Override public boolean condition() throws InterruptedException { return cookingWidget != null && cookingWidget.isVisible(); } }.sleep()) { // Interact with the "Cook All" option in the widget if (cookingWidget != null) { // Widget 270, Child 14 is "Cook All" if(!cookingWidget.isVisible()) { range.interact("Cook"); } if (cookingWidget.interact("Cook")) { log("Selected 'Cook All' option."); // Wait until cooking starts (player animates) new ConditionalSleep(8000, 15000) { @Override public boolean condition() throws InterruptedException { return myPlayer().isAnimating(); } }.sleep(); } } else { log("Cook option not found."); } } // Wait until cooking is finished new ConditionalSleep(15000, 20000) { @Override public boolean condition() throws InterruptedException { return !myPlayer().isAnimating(); } }.sleep(); } } } // Walk to the bank if inventory is empty if (!inventoryContainsRawFish() && !BANK_AREA.contains(myPlayer())) { getWalking().webWalk(BANK_AREA); } // Walk to the range if the inventory contains raw fish if (inventoryContainsRawFish() && !RANGE_AREA.contains(myPlayer())) { getWalking().webWalk(RANGE_AREA); } return 300; // Delay for script loop } /** * Checks if the inventory contains the selected raw fish. * * @return true if inventory contains raw fish, false otherwise */ private boolean inventoryContainsRawFish() { return getInventory().contains(getRawFishID()); } /** * Maps the selected fish to its raw item ID. * * @return the raw fish item ID */ private int getRawFishID() { switch (selectedFish) { case "Raw shrimps": return 317; case "Raw sardine": return 327; case "Raw herring": return 345; case "Raw anchovies": return 321; case "Raw trout": return 335; case "Raw salmon": return 331; case "Raw tuna": return 359; case "Raw lobster": return 377; case "Raw swordfish": return 371; case "Raw monkfish": return 7944; case "Raw shark": return 383; case "Raw anglerfish": return 13439; default: return -1; } } @Override public void onExit() { log("Thank you for using DexCooker!"); } }1 point
-
1 point
-
1 point
-
1 point
-
1 point