Jump to content


Lifetime Sponsor
  • Posts

  • Joined

  • Last visited

  • Feedback


About Folks

Profile Information

  • Gender

Recent Profile Visitors

1212 profile views

Folks's Achievements

Iron Poster

Iron Poster (3/10)



  1. Here is a quick bank util I made after running into issues with walking to the nearest bank only to have it be unaccessible due to quest/skill requirements. I haven't tested this yet but I may need to alter it so that the quest checks are cached once on initialization if it takes a long time to do all the checks. If anyone knows the config values for checking RFD sub-quest completion and is willing to share, let me know so I can add those checks in properly as well as the Lunar Diplomacy and Tree Gnome Stronghold values. Banks taken from here but I plan to add most if not all of the banks listed on the wiki when time permits. I think spoilers are broken so enjoy the long ass post Usage BankUtil.getAccessibleBanks(SomeMethodProvider); Source import org.osbot.rs07.api.Favour; import org.osbot.rs07.api.Quests; import org.osbot.rs07.api.map.Area; import org.osbot.rs07.api.map.constants.Banks; import org.osbot.rs07.api.ui.EquipmentSlot; import org.osbot.rs07.api.ui.Skill; import org.osbot.rs07.script.MethodProvider; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class BankUtil { enum Bank { AL_KHARID(Banks.AL_KHARID), ARCEUUS_HOUSE(Banks.ARCEUUS_HOUSE), ARDOUGNE_NORTH(Banks.ARDOUGNE_NORTH), ARDOUGNE_SOUTH(Banks.ARDOUGNE_SOUTH), CAMELOT(Banks.CAMELOT), CANIFIS(Banks.CANIFIS), CASTLE_WARS(Banks.CASTLE_WARS), CATHERBY(Banks.CATHERBY), DRAYNOR(Banks.DRAYNOR), DUEL_ARENA(Banks.DUEL_ARENA), EDGEVILLE(Banks.EDGEVILLE), FALADOR_EAST(Banks.FALADOR_EAST), FALADOR_WEST(Banks.FALADOR_WEST), GNOME_STRONGHOLD(Banks.GNOME_STRONGHOLD), GRAND_EXCHANGE(Banks.GRAND_EXCHANGE), HOSIDIUS_HOUSE(Banks.HOSIDIUS_HOUSE), LOVAKENGJ_HOUSE(Banks.LOVAKENGJ_HOUSE), LOVAKITE_MINE(Banks.LOVAKITE_MINE), LUMBRIDGE_LOWER(Banks.LUMBRIDGE_LOWER), LUMBRIDGE_UPPER(Banks.LUMBRIDGE_UPPER), PEST_CONTROL(Banks.PEST_CONTROL), PISCARILIUS_HOUSE(Banks.PISCARILIUS_HOUSE), SHAYZIEN_HOUSE(Banks.SHAYZIEN_HOUSE), TZHAAR(Banks.TZHAAR), VARROCK_EAST(Banks.VARROCK_EAST), VARROCK_WEST(Banks.VARROCK_WEST), YANILLE(Banks.YANILLE), BARBARIAN_ASSAULT(new Area(2534, 3576, 2537, 3572)), BURGH_DE_ROTT(new Area(3496, 3213, 3499, 3210)), CRAFTING_GUILD(new Area(2933, 3284, 2936, 3281)), ETCETERIA(new Area(2618, 3896, 2620, 3893)), FISHING_TRAWLER(new Area(2661, 3162, 2665, 3160)), FISHING_GUILD(new Area(2584, 3422, 2588, 3418)), GRAND_TREE_WEST(new Area(2440, 3489, 2442, 3487).setPlane(1)), GRAND_TREE_SOUTH(new Area(2448, 3482, 2450, 3479).setPlane(1)), JATISZO(new Area(2415, 3803, 2418, 3801)), KOUREND(new Area(1610, 3683, 1613, 3680).setPlane(2)), LLETYA(new Area(2350, 3163, 2354, 3162)), LUNAR_ISLE(new Area(2097, 3919, 2102, 3917)), LANDS_END(new Area(1508, 3423, 1511, 3419)), NARDAH(new Area(3424, 2892, 3430, 2889)), NEITIZNOT(new Area(2335, 3808, 2337, 3805)), PORT_PHASMATYS(new Area(3686, 3471, 3691, 3463)), PISCATORIS(new Area(2327, 3690, 2332, 3687)), SHILO_VILLAGE(new Area(2849, 2955, 2855, 2953)), SANDCRABS(new Area(1717, 3466, 1722, 3463)), SHANTAY_PASS(new Area(3305, 3123, 3308, 3119)), SULPHUR_MINE(new Area(1453, 3859, 1458, 3856)), TREE_GNOME_STRONGHOLD(new Area(2444, 3427, 2446, 3422).setPlane(1)), VINERY(new Area(1802, 3571, 1808, 3571)), WARRIORS_GUILD(new Area(2843, 3544, 2846, 3539)), WOODCUTTING_GUILD(new Area(1589, 3480, 1593, 3476)), ZEAH_COOKING(new Area(1653, 3613, 1658, 3607)); private final Area area; Bank(final Area area) { this.area = area; } public Area getArea() { return area; } } public static Area[] getBankAreas() { return Arrays.stream(Bank.values()).map(Bank::getArea).toArray(Area[]::new); } public static Area[] getAccessibleBanks(final MethodProvider api) { List<Area> accessibleBanks = new ArrayList<>(); // f2p accessibleBanks.add(Bank.AL_KHARID.getArea()); accessibleBanks.add(Bank.CASTLE_WARS.getArea()); accessibleBanks.add(Bank.DRAYNOR.getArea()); accessibleBanks.add(Bank.DUEL_ARENA.getArea()); accessibleBanks.add(Bank.EDGEVILLE.getArea()); accessibleBanks.add(Bank.FALADOR_EAST.getArea()); accessibleBanks.add(Bank.FALADOR_WEST.getArea()); accessibleBanks.add(Bank.GRAND_EXCHANGE.getArea()); accessibleBanks.add(Bank.LUMBRIDGE_UPPER.getArea()); accessibleBanks.add(Bank.VARROCK_EAST.getArea()); accessibleBanks.add(Bank.VARROCK_WEST.getArea()); accessibleBanks.add(Bank.SHANTAY_PASS.getArea()); if (api.getSkills().getVirtualLevel(Skill.CRAFTING) >= 40 && api.getEquipment().isWearingItem(EquipmentSlot.CHEST, "Brown apron")) { accessibleBanks.add(Bank.CRAFTING_GUILD.getArea()); } // p2p if (api.getClient().isMember() && api.getWorlds().isMembersWorld()) { accessibleBanks.add(Bank.ARCEUUS_HOUSE.getArea()); accessibleBanks.add(Bank.ARDOUGNE_NORTH.getArea()); accessibleBanks.add(Bank.ARDOUGNE_SOUTH.getArea()); accessibleBanks.add(Bank.CAMELOT.getArea()); accessibleBanks.add(Bank.CATHERBY.getArea()); accessibleBanks.add(Bank.GNOME_STRONGHOLD.getArea()); accessibleBanks.add(Bank.HOSIDIUS_HOUSE.getArea()); accessibleBanks.add(Bank.LOVAKENGJ_HOUSE.getArea()); accessibleBanks.add(Bank.LOVAKITE_MINE.getArea()); accessibleBanks.add(Bank.PEST_CONTROL.getArea()); accessibleBanks.add(Bank.PISCARILIUS_HOUSE.getArea()); accessibleBanks.add(Bank.SHAYZIEN_HOUSE.getArea()); accessibleBanks.add(Bank.TZHAAR.getArea()); accessibleBanks.add(Bank.YANILLE.getArea()); accessibleBanks.add(Bank.BARBARIAN_ASSAULT.getArea()); accessibleBanks.add(Bank.VINERY.getArea()); accessibleBanks.add(Bank.FISHING_TRAWLER.getArea()); accessibleBanks.add(Bank.KOUREND.getArea()); accessibleBanks.add(Bank.ZEAH_COOKING.getArea()); accessibleBanks.add(Bank.LANDS_END.getArea()); accessibleBanks.add(Bank.NARDAH.getArea()); accessibleBanks.add(Bank.SANDCRABS.getArea()); accessibleBanks.add(Bank.SULPHUR_MINE.getArea()); if (api.getQuests().isComplete(Quests.Quest.PRIEST_IN_PERIL)) { accessibleBanks.add(Bank.PORT_PHASMATYS.getArea()); accessibleBanks.add(Bank.CANIFIS.getArea()); } if (api.getQuests().isStarted(Quests.Quest.IN_AID_OF_THE_MYREQUE)) { accessibleBanks.add(Bank.BURGH_DE_ROTT.getArea()); } if (api.getQuests().isComplete(Quests.Quest.THE_FREMENNIK_TRIALS)) { accessibleBanks.add(Bank.ETCETERIA.getArea()); if (api.getQuests().isStarted(Quests.Quest.THE_FREMENNIK_ISLES)) { accessibleBanks.add(Bank.JATISZO.getArea()); accessibleBanks.add(Bank.NEITIZNOT.getArea()); } } if (api.getQuests().isComplete(Quests.Quest.SHILO_VILLAGE)) { accessibleBanks.add(Bank.SHILO_VILLAGE.getArea()); } if (api.getQuests().isStarted(Quests.Quest.MOURNINGS_END_PART_I)) { accessibleBanks.add(Bank.LLETYA.getArea()); } if (api.getQuests().isComplete(Quests.Quest.SWAN_SONG)) { accessibleBanks.add(Bank.PISCATORIS.getArea()); } if (api.getSkills().getVirtualLevel(Skill.FISHING) >= 68) { accessibleBanks.add(Bank.FISHING_GUILD.getArea()); } if (api.getSkills().getVirtualLevel(Skill.ATTACK) + api.getSkills().getVirtualLevel(Skill.STRENGTH) >= 130) { accessibleBanks.add(Bank.WARRIORS_GUILD.getArea()); } if (api.getSkills().getVirtualLevel(Skill.WOODCUTTING) >= 60 && api.getFavour().getFavour(Favour.House.HOSIDIUS) >= 75) { accessibleBanks.add(Bank.WOODCUTTING_GUILD.getArea()); } // First time entering minigame(?) Need to figure this out. if (false) { accessibleBanks.add(Bank.GRAND_TREE_WEST.getArea()); accessibleBanks.add(Bank.GRAND_TREE_SOUTH.getArea()); accessibleBanks.add(Bank.TREE_GNOME_STRONGHOLD.getArea()); } // Only needs partial completion, need to figure out the check for it. if (api.getQuests().isComplete(Quests.Quest.LUNAR_DIPLOMACY)) { accessibleBanks.add(Bank.LUNAR_ISLE.getArea()); } // Only needs one part finished, need to figure out the check for that as well. if (api.getQuests().isStarted(Quests.Quest.RECIPE_FOR_DISASTER)) { accessibleBanks.add(Bank.LUMBRIDGE_LOWER.getArea()); } } return accessibleBanks.toArray(new Area[0]); } }
  2. While working on my own paint, I liked the aesthetic of the chatbox so I wanted to keep the look and paint over it with the same or similar colors. I figured I'd share since others might find it useful. Side note I just noticed there is a chatbox in the api which might have something to make this easier or better but I am too lazy to look into it at this point. private static final int CHAT_BOX_X = 0; private static final int CHAT_BOX_Y = 338; private static final int CHAT_BOX_WIDTH = 519; private static final int CHAT_BOX_HEIGHT = 142; private static final int CHAT_BOX_PADDING = 6; private static final Color CHAT_BOX_COLOR = new Color(200, 180, 150); public void fillChatBoxPadded(final Graphics2D g) { int paddedX = CHAT_BOX_X + CHAT_BOX_PADDING; int paddedY = CHAT_BOX_Y + CHAT_BOX_PADDING; int paddedWidth = CHAT_BOX_WIDTH - (2 * CHAT_BOX_PADDING); int paddedHeight = CHAT_BOX_HEIGHT - (2 * CHAT_BOX_PADDING); g.setColor(CHAT_BOX_COLOR); g.fillRect(paddedX, paddedY, paddedWidth, paddedHeight); g.setColor(Color.black); g.drawRect(paddedX, paddedY, paddedWidth, paddedHeight); } public void fillChatBox(final Graphics2D g) { g.setColor(CHAT_BOX_COLOR); g.fillRect(CHAT_BOX_X, CHAT_BOX_Y, CHAT_BOX_WIDTH, CHAT_BOX_HEIGHT); g.setColor(Color.black); g.drawRect(CHAT_BOX_X, CHAT_BOX_Y, CHAT_BOX_WIDTH, CHAT_BOX_HEIGHT); } With padding Without padding
  3. I was pretty surprised that I didn't get a ban as well. 4ish hours a day max but essentially every day around the same time (during my lunch breaks, after work).
  4. It is for all fires/ranges, when you have cooked food that has a burnt variation used in a quest (such as druidic ritiual, reference https://oldschool.runescape.wiki/w/Burnt_food), it will give you the option to burn it manually.
  5. Fantastic script, 50-99 with no ban over the course of 2ish weeks Thank you!
  6. Yea, I'll try to write up a tutorial too so others can could follow along with or change the methods I am doing.
  7. I am not actually making a script with it, I am training a deep learning model for an into to machine learning class and i figured the easiest way to build a data set would be to automate it with a bot. ? Thanks a ton!
  8. Hey! I am wondering if its possible to trace an object such as a tree or rock to mine with the paint? I was looking through the methods and objects have an x, y position and a x, y size but for example with copper and tin ore their sizes are 1 for both x and y which obviously doesnt help too much. I have tried to find a method that could get the bounds of a object but I may be missing it. Even just drawing a square around the object would be fine! Thanks!
  9. Can't tell if trolling or not but it means greater than or equal to.
  10. Thanks for that, sometimes people just can't be wrong
  11. Not at all. Just because one script might not function in mirror mode doesn't mean dialogues are not supported there.
  12. This thread has nothing to do with stealth quester though.
  13. You're fine on arch linux, can't speak for books because I don't like them.
  • Create New...