

liverare
Scripter II-
Posts
1300 -
Joined
-
Last visited
-
Days Won
3 -
Feedback
0%
Everything posted by liverare
-
Right. It appears I added a bit of code that eats all your keystrokes when I added the hotkey support. It was meant to eat up the keystrokes of your hotkeys, not all keystrokes lol. I'll fix this and hopefully it'll be updated on the SDN tonight.
-
Let me make sure I got this correct: as the macro is doing its thing, you want to be able to fill out the Grand Exchange things (like search box, amounts, etc.) yourself?
-
Make sure both the bot and script has keyboard enabled. In the script GUI, you have to click the 'submit' button to update the configuration stuff.
-
I haven't put any restrictions in. However, the longer you record, the larger the macro file becomes. It can easily reach megabytes if you're planning to record for a very long time. I'd be interested to see just how much your PC can handle. For a little techier explination; there's a 'virtual list' in the program that holds every single input you do, which includes mouse movements, clicks, scrolls, and keyboard strokes. I believe the maximum amount of inputs that can be added to the list is 2,147,483,647. I may change the list type in the future, but I'm pretty sure that number's a tab bit high for even the most extreme uses. But, the more stuff in the list, the longer it takes to read from it. Although, modern computers shouldn't really have a problem with this, but just bare it mind.
-
I did. It's available in the SDN release. Check it out here: https://osbot.org/mvc/sdn2/scripts/21
-
Script now available on the SDN!
-
Be sure to try out Macro Recorder when it's on the SDN, and let me know if there's anything you'd like added.
-
Just out of curiosity, what's the name of the program you've used?
-
Not yet. Alek has reviewed my SDN upload request last night, but he wanted me to make a few changes first. I'm hoping he'll do it tonight.
-
The hotkey feature will be available for the version of the script released on the SDN.
-
There are no hotkeys. You just reminded me of something I'd forgotten to add lol. You can save the macro, edit the file, and try to remove the lines where your mouse isn't on the game. Which keys would you like to have to record/stop recording, also to start, pause, and stop the macro itself?
-
Display SND thread here. Source files (.java) are packaged in the Jar file attached below. Extract them as you would a compressed Zip/Rar folder. OSBot Recorder V1.jar
-
Click here to go to the SDN page to add the script. Display
-
Seems suspect af. An account as accomplished as that would cost a hell of a lot more than 350M to build. I'm guessing it's stolen.
-
I don't think there exists a way to differentiate ground items like this. A possible workaround is to cache the ground items and flag the ground items you can't pickup. I wrote untested ad-hoc example you can try: Example code public class Test extends Script { IronManLootingAPI ironManLootingAPI; @Override public void onStart() throws InterruptedException { ironManLootingAPI = new IronManLootingAPI(); ironManLootingAPI.exchangeContext(bot); ironManLootingAPI.initializeModule(); } @Override public int onLoop() throws InterruptedException { // 1. find all existing ground items by calling "refresh" if (ironManLootingAPI.refresh()) { // 2. find a specific item if (ironManLootingAPI.find("Abyssal whip", "Abyssal dagger", "Gilded platelegs")) { // 3. Do your looting here if (ironManLootingAPI.getFound().interact("Take")) { /* * The IronManLootingAPI has a message listener * if it detects "You're an Iron Man, so you can't take that." */ if (ironManLootingAPI.isNotYours()) { logger.debug("Aww shucks..."); } } } } return 250; } } Iron Man Looting API (IronManLootingAPI.java) import java.util.Iterator; import java.util.Map; import java.util.WeakHashMap; import java.util.Map.Entry; import java.util.function.Predicate; import java.util.stream.Collectors; import org.osbot.rs07.api.model.GroundItem; import org.osbot.rs07.api.ui.Message; import org.osbot.rs07.api.ui.Message.MessageType; import org.osbot.rs07.listener.MessageListener; import org.osbot.rs07.script.API; public class IronManLootingAPI extends API implements MessageListener { Map<GroundItem, Boolean> groundItems; Entry<GroundItem, Boolean> groundItemEntry; @Override public void initializeModule() { groundItems = new WeakHashMap<>(); bot.addMessageListener(this); } @Override public void onMessage(Message messageObj) throws InterruptedException { if (messageObj.getType() == MessageType.GAME) { if (messageObj.getMessage().equals("You're an Iron Man, so you can't take that.")) { if (groundItemEntry != null) { groundItemEntry.setValue(Boolean.FALSE); } } } } /** * To clear all entries */ public void reset() { groundItems.clear(); } /** * Reload all ground items * * @return Ground items found */ public boolean refresh() { // turn List<GroundItem> to Map<GroundItem, Boolean.TRUE> Map<GroundItem, Boolean> newGroundItems = super.groundItems.getAll().stream() .collect(Collectors.toMap(item -> item, item -> Boolean.TRUE)); removeInvalidGroundItems(); newGroundItems.forEach(groundItems::putIfAbsent); return !groundItems.isEmpty(); } /** * Find item by predicate * * @param predicate * @return */ public boolean find(Predicate<GroundItem> predicate) { removeInvalidGroundItems(); groundItemEntry = groundItems .entrySet() .stream() .filter(entry -> entry.getValue().equals(Boolean.TRUE)) .filter(entry -> predicate.test(entry.getKey())) .findFirst() .orElse(null); return (groundItemEntry != null); } /** * Find item by name * * @param itemNameArray * @return */ public boolean find(String... itemNameArray) { return find(item -> { boolean result = false; String itemName = item.getName(); for (String itemNameElement : itemNameArray) { if (itemName.equalsIgnoreCase(itemNameElement)) { result = true; break; } } return result; }); } /** * Remove items that have despawned/been taken */ private void removeInvalidGroundItems() { Iterator<Entry<GroundItem, Boolean>> iterator = groundItems.entrySet().iterator(); Entry<GroundItem, Boolean> entry; GroundItem groundItem; while (iterator.hasNext()) { entry = iterator.next(); groundItem = entry.getKey(); if (groundItem == null || !groundItem.exists()) { iterator.remove(); } } } /** * * @return Cached ground item */ public GroundItem getFound() { return groundItemEntry != null ? groundItemEntry.getKey() : null; } public boolean isNotYours() { return groundItemEntry != null && !groundItemEntry.getValue(); } }
-
Didn't know what. Well it depends on how you implement stuff. Try to keep everything contained in the API class, and keep the inner-classes non-static so they have access to methods. Otherwise, you'd need a static reference still. However, I would avoid statically referencing the script object. Also, @battleguard says there's a hook that OSBot hasn't implemented that will get you the information. You can't read GE information using settings (afaik).
-
Whenever I make a custom API for OSBot, I extend the API class onto that object: Also, RSBuddy can read your Grand Exchange offers without you ever having to be present at the GE. My guess is that there are configs you can use to read your offers. It'd be more optimal to these, because you're likely to have fewer IDs and a lot less code. Furthermore, you don't have to rely on Widgets nearly as much, which is something you should definitely consider doing, because Jagex seem to be playing around with an awful lot of them as of late. https://osbot.org/api/org/osbot/rs07/api/Configs.html Also, the bot has config listener too: https://osbot.org/api/org/osbot/rs07/listener/ConfigListener.html You can instantiate and implement listeners in the initializeModule() method of the API, which you then must call after you instantiate the API and exchange the bot with it. Translation: public class CustomGrandExchangeAPI extends API implements ConfigListener { @Override public void initializeModule() { bot.addConfigListener(this); } public void onConfig(int id, int value) { /* Register changes to GE offers */ } /* Fun code stuff */ } Then in your script CustomGrandExchangeAPI customGEAPI; @Override public void onStart() { customGEAPI = new CustomGrandExchangeAPI(); customGEAPI.exchangeContext(bot); customGEAPI.initializeModule(); } I haven't read the code in great depth yet, so this is just my precursory evaluation.
-
I'm not sure where you're getting that impression. I've shared my results to help give some insight into the appeal process for others who may attempt to file their own appeals too. It's also a learning exercise, and I'm curious to find out whether there's a criteria we can discover and work with.
-
It would be nice for people who've requested appeals to provide their responses, so we can perhaps map out: How long after a ban should you wait? Which moderators are most forgiving? Are there anomalies, such as a not-so-old account with an not-so-old ban being unbanned, and by who?
-
He's probably just doing his due diligence; Mod River could be too lenient. What I may end up doing is seeing if I can pass a message along to Mod River to see if I can get him to take a second look. That, or I'll try appealing again in a few years. However, they did mention in the email that it was a "final" decision, but hey, if a permanent ban isn't permanent, then final isn't final. Never say never.
-
13-year-old account got permanently banned in 2010 for botting. Appealed for an unban this year. It was accepted as "significant time has passed" and that it was an "extremely rare case" for them to have unbanned it. The email I received was from Mod River. 8-year-old account got permanently banned in 2014 for botting. Appealed for an unban this year. It was rejected. The email I received was from Mod Gnarly. Make of this what you will.
-
True. I'd love to get into the PVP aspect of RS, but the game keeps coming up with new and expensive meta, and the PVP comes down to how fast you can execute a sequence of clicks. That's not fun. I prefer FPS games and Dark Souls style PVP to that of RS. I think I could learn to play and love RS PVP if only they'd revert everything back to 2006 days, where the meta was understood (even by people who didn't PK).
-
Nothing’s surprising anymore. Whenever new content is added to the game, it’s polled, sneak previews are dumped religiously, and the content is so well known even before it’s released that the exploration part had already taken place well before the content reaches the players. Moreover, developers are seemingly more interested in pixel quality than substance. Developers are making dumb decisions constantly. I’m an old player who joined in 2006; one of the most exciting things to do was go on an adventure. Adventures usually involved completing a quest. You’d complete a quest and unlock something better than anybody else who didn’t complete that quest. Well not anymore. Now, you can just pay for the new meta. Can’t equip a dragon dagger? Just go buy dragon claws. Same shit, different package. That, or the new quests add game-bloat/dead content, because the rewards are so utterly fucking useless. There’s more community spirit and serious discussions on a botting forum than the game’s official forum or their subreddit. That’s telling in and of itself. Grinds are annoying precisely because it’s unprofitable. When I joined, my brother advised me to get 60 woodcutting so I could start chopping yews. When I did, I found myself making a ton of cash. Bare in mind, the prices for yew logs were roughly 600gp at the time. However, now bots have devalued the logs to the point where it’s arguable not to start botting too. Hell, I’m posting here aren’t I? Fuck. The only times I’ve had butterflies and a real rush of excitement from this game is when I completed the quests when the game launched and I was a born-again noob, and I’ve won stakes at the Duel Arena. Which one do you think will prevail in 10 years? Hell, even the new Dragon Slayer 2 quest wasn’t all that exciting; hardly anything got added that’s worth obtaining. The developers are too afraid to fuck with the old meta. I’ve said for ages that ice barrage is too overpowered. They could have addressed this by having the visages from fossil island wyverns create a shield that counters it. But no, that would cause controversy. God forbid anyone takes a chance anymore. Overwatch is a perfect example of a game that’s not afraid to fuck with the old meta, and is fun because of it. However, in RS, we have an ever-escalating power-creep. I am actually wrong; Jagex are perfectly fine fucking with the old meta if it involves fucking with a quest item. Remember the crystal bow? Hardly anybody does. That shit's so outclassed you're considered a noob for using it. Holy fucking shit, I still remember the days when the legends cape was the meta for capes, until it was shat on by the obby and fire capes. I'm perhaps still a bit bitter that it takes less effort to get a fire cape, but yet it's more rewarding. Every glitch, even the benign ones, are patched, which takes away any unintended uniqueness of the game. There are some fun and quirky glitches, like swimming on land and smuggling items out of POH. However, they just had to be patched, even though they didn’t harm the game at all. Activision are notorious for having gone from a game where you had entire jump-clans dedicated to glitching, to games where you can’t walk two feet without headbutting a collision block that touches the fucking skybox; and I hate them for it and makes their newer games feel lacklustre. It's almost like they're trying so hard to be perfect that I can't help but smell the Uncanny Valleyness of it all. I like it when a video game isn't afraid to leave some imperfections as be. PVP’s an absolute shambles. I’ve never gotten into it myself, partly out of fear that I won’t measure to the new meta, or to how good others are with their sequence of clicks. I much prefer PVP in other games, like FPS games and even Dark Souls. Those games at least give you a chance if you’re new. I think I could get into OSRS PVP if they reverted everything back to 2006 and left it there. The perfect example of how OSRS is and where it’s heading can be found in Fossil Island. What was supposed to be new adventurous content ended up going stale after only a couple of days. Why? Because the Fossil Island doesn’t even measure up to older content. I still get goose bumps when I navigate the plane south of Castle Wars. I feel nothing when I’m on Fossil Island, except for the urge to just leave. We don’t have rares that will appreciate, which means there’s nothing to work towards and nothing to hold sacred. Everything considered rare now will lose its value in 10 or 20 years, whereas EOC will have party hats that will literally require you to take a second mortgage out on your house to afford. Imagine the elation someone feels when they finally own an item they’ve always wanted, like a Christmas cracker on EOC? I doubt there’ll ever be a truly rich feeling as that in OSRS, which is sad. This is perhaps where I finally acknowledge I'm getting too old for this shit. Perhaps I need to make my own game. Andrew and Paul Gower were in their mid 20's when they built RS. But I don't think making a similar game would win anyone nowadays, because AAA+ companies have raised expectations too high for an individual developer to ever hope to meet. Nonetheless, I'll endeavour to build my own MMORPG...one day. I just felt like rambling...
-
This sort of stuff amazes me and it's not the first example of drone transportation. I wonder what battery he's using and how long he could fly for. I hope to one day own a flying drone car.
-
Enum for the data. Custom API for everything relating to the Museum (and only the museum - which will also include the enum). Task/Node or plain code for macro logic.