-
Posts
238 -
Joined
-
Last visited
-
Days Won
1 -
Feedback
100%
Everything posted by yfoo
-
Any one of the AIOs under the smithing section will do it. https://osbot.org/mvc/sdn2/scripts/18
-
Should work but not optimal, script will bank when inventory is full instead of dropping junk seeds and continuing. Setup inventory to being a small amount of food, leaving lots of open slots. I also recommend the ardy location over draynor. Its possible to misclick on a stall and take guard aggro. There is some runaway code to prevent dying, but I never tested that part, and I don't remember if it stops the script afterwards or walks back and resumes.
-
Currently writing an anti-ban and want opinions.
yfoo replied to Kintaro Oe's topic in Botting & Bans
Contextual based on the actual activity you're doing. Example: Powerfishing script. AFK for a bit after the your character stops fishing. This can be due to the fishing spot moving or inventory being full. Proceed to drop fish if the inventory is full or almost full after your character stops fishing. Its reasonable for someone to drop fish if there is only 1 inventory slot left. Then restart fishing to maximize AFK time per fishing spot interaction Example Thieving Script. When the player is stunned, randomly select an action(s) to preform or none at all... Such as Eating Food, Spam clicking, Dropping junk (jugs after drinking wine), Opening pouches, Menu hover the NPC, ect. For each script session, set a random clicking cadance to use for pickpocketing. I simply set a mean/std_deviation at script start. Then use these 2 numbers to generate random sleep intervals between clicks. Continue pickpocketing for a few iterations even after your character is at max pouches. Basically some things you would expect a real player to do. -
> Add some code to check if the genie is interacting with the player. I think this is the best way to do it. Character has IsInteracting So you can use ``` genieInstance.IsInteracting(myPlayer()) ``` https://osbot.org/api/org/osbot/rs07/api/model/Character.html#isInteracting-org.osbot.rs07.api.model.Character-
-
Why did you set only certain amethyst positions to be mine-able? private final List<Integer> AMETHYST_Y = Arrays.asList(9710, 9711, 9712); // Y positions of amethyst crystals
-
As for the GUI error public void onStart() { log("Initializing Script...."); frame = new JFrame("DexCutter"); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.setBounds(50, 50, 400, 400); frame.setVisible(true); //<<<<<<<<<<<<<<<<< ... Move frame.setVisible(true); to the end of onStart(). It is set to visible before al the other components are added to the panel.
-
1. Put the image in resources so that a network request is not needed then use SystemIO to get thz. There is no guarantee that the hosting service won't delete your image randomly. Refer to the link below for a more concise tutorial. RS2Object treeObject = getObjects().closest(tree.getObjectId()); if (treeObject == null) { this.log("Yew tree is null...."); } log("does it contain tree obj? " + treeArea.contains(treeObject)); 2. Use the filter API. This can be simplified to something like ``` RS2Object treeObject = getObjects().closest(rs2Object -> rs2Object.getId() == tree.getObjectId() && treeArea.contains(rs2Object); ``` This will ensure tree interactions are only done on trees of a certain type (regular, oak, willow, ect.) and are in the designated area. 3. The Paint and GUI are crammed in the the Script class its hard to read. Consider splitting these up into individual classes. You can designate a painter class by having it implement Painter. Then in onStart calling getBot().addPainter(<paint instance>) Make sure to remove this in onStop with getBot().removePainter(<same instance as above>) Otherwise the paint may not get cleaned up if the script crashes/exits. 4. You don't need to call this if you are intending to immediately interact with the object. The interaction will do this if the object is not on screen. if (getCamera().toEntity(treeObject)) Its a great first attempt. Ill take a look at the gui later.
-
Surprisingly, while it is know Jagex collects mouse movements they maybe are ignoring them for botting bans. The general consensus is that invokes don't seem to increase ban rates over using osb regular mouse. This may or may not be the case in the future. Maybe mouse data is unreliable as touchscreen PCs do exist. I also think some runelite plugins use invokes. I've seen a world hopper plugin that allows a hotkey to be bound for hopping to the next world without having the use the standard interface.
-
Cool release. If you are supporting dungeon doors, the edge case where the butler can reappear behind the door while the door is being built must be considered. When player control is given back, the door is between the player and butler and the butler will be unable to be interacted with. Eagle's patch notes specifically mentions this. "Mutes audio increase performance" Huh neat.
-
It turns out you can interweave high alchs with nearly any other activity if you are willing to forgo afk. Make Dhide bodies then alch them Fletch longbows then alch them Smith At an anvil then alch the output Make Jewelry, enchant it, then alch it. (Must be invoked)
-
Cooks any food while interweaving high alchs. Features Expect ~840 cook/alch cycles per hour. Compare to only casting High alchemy, which peaks at a rate of ~1200/hr. Can use any range/fire as long as it is directly accessible (no doors/stairs) AND is close to a banking entity Recommend Rogue's Den fire, Hosidious Range, Myths Guild bank. Al Kharid / Edgeville may not work at release Very good xp/hr and gp/hr. (Cook Profit + Alch Profit) Setup Have The following in inventory/equipped Raw food (Name must start with Raw) at least 1 coin (To function as a gp placeholder) Nature runes, NOTED alching Item. The script will automatically move it to slot 15 and disable spell filtering Equipped infinite source of fire rune (Fire staff/Tome of fire/ect.) Start script at a valid spot with a range/fire and bank nearby. Checklist to assist in setup. Cooking gauntlets are optional This interface will change as items are added/removed from the inventory, or gauntlets are equipped.
-
I was one of the beta testers for this script. It's Great, works very well especially when using invokes. It is also low ban rate likely as this place is very rarely botted, this script might be the first public underwater thieving script to ever be released. In the time I spent running this, I have not seen another player. The script won't get you the greatest xp or gp per hour but its not as if you're doing it. . Mermaid tridents is the best gp/hr.
-
[INFO][Bot #1][06/06 07:21:31 PM]: barrows equipment broke and script is not set to repair Address the above. If you're not using barrows, contact the developer on their script's thread.
-
Hello, may I get a trial please?
-
Very useful for new accounts, all gain, negligible impact in case of ban. I might ctrl c/v this for f2p fun later.
-
Got some in the oven. Such as 300k Construction xph by interweaving butler plank fetching and build/remove operations for minimal downtime.
-
A simple Barbarian Fishing script to grind fishing levels. Setup Start at Otto's Grotto with Barbarian rod and bait (Feather or Fishing bait). Supports Dragon Harpoon Special, Equipped. *Supports Pearl Barbarian Rod, Have it Equipped* *Should Work, I just check the Weapon slot for it. Never tested as I don't have it* Features Catch and Releases Barbarian fish to comply with local fishing regulations. AFKs a gaussian random amount of time after player stops fishing. Different Mean/Std_dev every script session Random chance to release fish if inventory is nearly full and player has stopped fishing. This is so the next fishing cycle will afk-able as long as possible. Random inventory drop orders. Not just the standard Left -> Right. This script happens to be the same one here. Just updated a bit.
-
2k total main. Unbanned, but I don't play it anymore. Currently 1.6k 75atk/45 def maxed pure + 99crafting and multiple 90s. Literally the strategy is don't overdo it. 4-6 hrs a day, switch tasks often.
-
DL doesn't work for you? Right click -> Save link as... BTW
-
You can add some log statements into your CS class to debug what is failing. Alternatively do what you are currently doing with... > I am currently writing out the ConditionalSleep, then adding additional sleeps after, and writing the mouse offscreen code each time but separate it out into a static utility method. I have this class that does something along the same lines. It just reattempts something up to n times as there can be race conditions with opening an interface, waiting for the interface actually becoming usable ingame, and attempting to interact with a widget in the interface. public class RetryUtil { public static boolean retry(Callable<Boolean> fx, int maxAttempts, int retryWaitTime) throws InterruptedException { int attempts = 0; boolean isSuccess = false; while (attempts < maxAttempts) { try { isSuccess = fx.call(); } catch (Exception ignored) { } attempts++; if(isSuccess) { break; } MethodProvider.sleep(retryWaitTime); } return isSuccess; } ex usage RetryUtil.retry(() -> bank.withdraw(itemId, amount), 5, 1000) You can try making something similar where you pass in a Callable that has some code you want to run (like bank.open()). Sleep until it is open, then roll to sleep a bit more + move the mouse offscreen.
-
What is the purpose of this? Is it to add a bit of extra delay after preforming any action along with potentially moving the mouse offscreen?
-
Thanks for describing the problem more. I didn't have much to go off the PM you sent me, unsure where it was failing so I had to guess. Consider adding a ConditionalSleep that awaits the results of Czar's function as there is no guarantee that lobsters will sell. Its 1 gp but you may adjust that to maybe 150 in the future. private boolean hasPendingCollect() { return Arrays.stream(Box.values()) .filter(box -> getGrandExchange().getStatus(box).equals(Status.FINISHED_SALE) || getGrandExchange().getStatus(box).equals(Status.FINISHED_BUY)) .count() > 0; } Then preforms the actual collection. boolean hasCollect = ConditionalSleep2.sleep(30000, () -> hasPendingCollect()); if (getGrandExchange().isOpen() && hasCollect) { log("We have some items to collect first..."); getGrandExchange().collect(); return 600; }
-
Your welcome. Thanks for the feedback.