Hmm
-
Posts
63 -
Joined
-
Last visited
-
Days Won
1
Posts posted by Hmm
-
-
-
-
-
-
Welcome to AssuranceGold
BUYING ALL RUNESCAPE 3 GOLD
My Discord: Assurance#7312
ID: 1033579281651073024
JOIN MY DISCORD SERVER:
CLICK HERE
Payment Methods:
Crypto (BTC/ETH/LTC)
Vouch Thread:
AssuranceGold Vouch Thread -
- 420x69x420 and Bryno
- 1
- 1
-
-
11 minutes ago, dada said:
it didn't select the minigame "Soul Wars"
it didn't work
That is strange, it is working for me.
MinigameTeleporter.teleportMinigame("Soul Wars");
-
15 hours ago, dada said:
thanks very much
You're welcome
-
-
12 hours ago, mamo95 said:
Thanks for the script but not working with me
I will look into it and get back to you.
-
-
I think all images would be available on wiki.
https://oldschool.runescape.wiki/w/Category:Item_images
Just curious, what do you plan to use this for?
-
On 4/1/2022 at 12:07 AM, Hans Zimmer said:
Thanks for the contribution, added to one of my scripts!
You're welcome! Great to hear.
-
Hi All,
I am wanting to share my implementation of Utility classes for DreamBot which are not available through the DreamBot API. The first one I am going to share is the MinigameTeleporter class.
This class is useful for allowing the local player to use the minigame teleports in the grouping tab. Below is the source code and how to use in your project.
ALL AVAILABLE CLASSES CAN BE FOUND AT: https://github.com/HMM7777/DreamBotUtility
SOURCE CODE
Spoilerimport org.dreambot.api.input.Mouse; import org.dreambot.api.methods.Calculations; import org.dreambot.api.methods.MethodProvider; import org.dreambot.api.methods.settings.PlayerSettings; import org.dreambot.api.methods.tabs.Tab; import org.dreambot.api.methods.tabs.Tabs; import org.dreambot.api.methods.widget.Widgets; import org.dreambot.api.wrappers.widgets.WidgetChild; import static org.dreambot.api.Client.getLocalPlayer; //********************************************************************************* // CLASS: MinigameTeleporter // The purpose of this class is to allow the local player to access and // utilise the minigame teleports. // AUTHOR: Hmm //********************************************************************************* public class MinigameTeleporter { private static final int GROUPINGBITVALUE = 3; //Bit value of Grouping tab is 3. private static final int PLAYERSETTINGSINDEX = 13071; //Index 13071 checks which tab is currently selected in the clan tab. private static final int GROUPINGTABPARENT = 707; //Parent of the grouping tab icon. private static final int GROUPINGTABCHILD = 6; //Child of the grouping tab icon. private static final int GROUPINGTABGRANDCHILD = 3; //Grandchild of the grouping tab icon. private static final int ACTIVITYSELECTPARENT = 76; //Parent of the activity selection dropdown menu. private static final int ACTIVITYSELECTCHILD = 8; //Child of the activity selection dropdown menu. private static final int ACTIVITYPANELPARENT = 76; //Parent of the activity selection panel. private static final int ACTIVITYPANELCHILD = 18; //Child of the activity selection panel. private static final int TELEPORTBUTTONPARENT = 76; //Parent of the teleport button. private static final int TELEPORTBUTTONCHILD = 26; //Child of the teleport button. private static final int SCOLLBARPARENT = 76; //Parent of the scroll bar. private static final int SCOLLBARCHILD = 19; //Child of the scroll bar. private static final int SCOLLBARGRANDCHILD = 0; //Grandchild of the scroll bar. private static final int SCOLLBARTHUMBPARENT = 76; //Parent of the scroll bar thumb. private static final int SCOLLBARTHUMBCHILD = 19; //Child of the scroll bar thumb. private static final int SCOLLBARTHUMBGRANDCHILD = 1; //Grandchild of the scroll bar thumb. //********************************************************************************* // BOOLEAN METHOD: isMinigameTabOpen() // Checks if the minigame tab is open. //********************************************************************************* private static boolean isMinigameTabOpen() { return Tabs.isOpen(Tab.CLAN) && PlayerSettings.getBitValue(PLAYERSETTINGSINDEX) == GROUPINGBITVALUE; } //********************************************************************************* // VOID METHOD: selectAnActivity() // Opens the activity panel. //********************************************************************************* private static void selectAnActivity(WidgetChild activitySelect, WidgetChild activityPanel) { if (activitySelect != null && !activityPanel.isVisible()) { activitySelect.interact(); } } //********************************************************************************* // VOID METHOD: resetScrollBar() // Resets the scroll bar. //********************************************************************************* private static void resetScrollBar() { WidgetChild activityPanel = Widgets.getWidgetChild(ACTIVITYPANELPARENT, ACTIVITYPANELCHILD); WidgetChild scrollBar = Widgets.getWidgetChild(SCOLLBARPARENT, SCOLLBARCHILD, SCOLLBARGRANDCHILD); WidgetChild scrollBarThumb = Widgets.getWidgetChild(SCOLLBARTHUMBPARENT, SCOLLBARTHUMBCHILD, SCOLLBARTHUMBGRANDCHILD); if (Mouse.move(activityPanel.getRectangle()) && scrollBarThumb.getRectangle().getY() != scrollBar.getRectangle().getY()) { Mouse.scrollUpUntil(1000, () -> scrollBarThumb.getRectangle().getY() == scrollBar.getRectangle().getY()); MethodProvider.sleepUntil(() -> scrollBarThumb.getRectangle().getY() == scrollBar.getRectangle().getY(), 5000); } } //********************************************************************************* // BOOLEAN METHOD: isScrollBarThumbAtTop() // Checks if the thumb of the scroll bar is at the top. //********************************************************************************* private static boolean isScrollBarThumbAtTop() { WidgetChild scrollBar = Widgets.getWidgetChild(SCOLLBARPARENT, SCOLLBARCHILD, SCOLLBARGRANDCHILD); WidgetChild scrollBarThumb = Widgets.getWidgetChild(SCOLLBARTHUMBPARENT, SCOLLBARTHUMBCHILD, SCOLLBARTHUMBGRANDCHILD); return scrollBar.getRectangle().getY() == scrollBarThumb.getRectangle().getY(); } //********************************************************************************* // VOID METHOD: openMinigameTab() // Opens minigame tab. //********************************************************************************* public static void openMinigameTab() { if (Tabs.open(Tab.CLAN)) { if (!isMinigameTabOpen()) { WidgetChild groupingTab = Widgets.getWidgetChild(GROUPINGTABPARENT, GROUPINGTABCHILD, GROUPINGTABGRANDCHILD); groupingTab.interact(); MethodProvider.sleepUntil(() -> isMinigameTabOpen(), Calculations.random(5000, 6000)); } } } //********************************************************************************* // VOID METHOD: teleportMinigame() // Teleports player to desired minigame location. //********************************************************************************* public static void teleportMinigame(String minigameName) { WidgetChild activitySelect = Widgets.getWidgetChild(ACTIVITYSELECTPARENT, ACTIVITYSELECTCHILD); WidgetChild activityPanel = Widgets.getWidgetChild(ACTIVITYPANELPARENT, ACTIVITYPANELCHILD); if (!isMinigameTabOpen()) { openMinigameTab(); MethodProvider.sleepUntil(() -> activitySelect != null && activitySelect.isVisible(), 10000); } else { if (!activitySelect.getText().equals(minigameName)) { selectAnActivity(activitySelect, activityPanel); WidgetChild nameOfMinigame = Widgets.getMatchingWidget(w -> w != null && w.getText().equals(minigameName)); if (isScrollBarThumbAtTop()) { Mouse.move(activityPanel.getRectangle()); if (!activityPanel.getRectangle().contains(nameOfMinigame.getRectangle())) { Mouse.scrollDownUntil(1000, () -> activityPanel.getRectangle().contains(nameOfMinigame.getRectangle())); } nameOfMinigame.interact(); MethodProvider.sleepUntil(() -> activitySelect.getText().equals(minigameName), 1500); } else { resetScrollBar(); } } else { WidgetChild teleportButton = Widgets.getWidgetChild(TELEPORTBUTTONPARENT, TELEPORTBUTTONCHILD); if (teleportButton != null) { if (teleportButton.interact()) { MethodProvider.sleepUntil(() -> getLocalPlayer().isAnimating(), 15000); MethodProvider.sleepWhile(() -> getLocalPlayer().isAnimating(), 15000); } } } } } }
HOW TO USE IN YOUR PROJECT
The MinigameTeleporter is easy to use. The MinigameTeleporter class contains the method teleportMinigame(String minigameName). The teleportMinigame method takes a String parameter. This String literal is the name of the minigame you wish to teleport to. Note: the String literal has to be spelt appropriately in accordance with the widget text value in the minigame tab.
Below is an example of teleporting to Clan Wars using the minigame teleports via the grouping tab.
MinigameTeleporter.teleportMinigame("Clan Wars");
ADDITIONAL NOTES
- The sleep times used can be changed to your convenience. The sleep times I used were made quickly for my test environment.
- The MinigameTeleporter does not check if your minigame teleport is available (cooldown 20 minutes). You can wrap the teleportMinigame with a boolean checker to see if the teleport is on cooldown or not. I did play with Varbit 8354 which is the counter for the minigame teleport.
- Most minigames are made available in the grouping tab and are selectable within the interface however some of these minigames do not have a teleport. Be weary of this.
- This class will most likely be used for F2P accounts or niche use cases.
Please let me know how it goes. Any constructive criticism will be appreciated.
Regards,
Hmm.
-
-
Can I trial, please?
-
Are these accounts created on a US IP address?
-
Thanks for the tutorial. This was very helpful.
Any chance we can get a tutorial on making/adding a custom web node?
⭐AssuranceGold⭐[BEST RATE]⭐[BUYING ALL RS3 Gold]⭐[BTC/ETH/LTC]
in Runescape 3
Posted
bump