Parenthesis Posted December 18, 2013 Share Posted December 18, 2013 (edited) Better Alternative - liverare's API Old API Couldn't really find anything in the OSBot API that covers this, so I've made a simple API. import org.osbot.script.Script; public class ChatTabManager { private Script context; public ChatTabManager(Script context) { this.context = context; } public int getTabState(int tab) { return context.client.getInterface(548).getChild(tab).getSpriteIndex1(); } public String getTabFilter(int tab) { String processedString = "{ERROR}"; if(tab != ChatTab.GAME || tab != ChatTab.ALL) { String rawMessage = context.client.getInterface(548).getChild(tab + 2).getMessage(); if(rawMessage.contains(">")) { processedString = rawMessage.substring(rawMessage.indexOf('>') + 1); } else { processedString = rawMessage; } } return processedString; } public boolean isTabOpen(int tab) { int tabState = this.getTabState(tab); if(tabState == TabState.OPEN || tabState == TabState.OPEN_HOVERED) return true; return false; } public int getCurrentTab() { int[] tabIDs = { 3, 6, 9, 13, 17, 21 }; for(int id : tabIDs) { if(isTabOpen(id)) { return id; } } return 0; } public String getTabName(int tab) { return context.client.getInterface(548).getChild(tab + 1).getMessage(); } public interface ChatTab { public final int ALL = 3; public final int GAME = 6; public final int PUBLIC = 9; public final int PRIVATE = 13; public final int CLAN = 17; public final int TRADE = 21; } public interface TabState { public final int STANDARD = 1019; public final int HOVERED = 1020; public final int UNREAD = 1021; public final int OPEN = 1022; public final int OPEN_HOVERED = 1023; } } For reference:Usage: ChatTabManager tabManager = new ChatTabManager(this); /* getTabFilter (<Integer ChatTab ID>) -- Returns 'On', 'Friends', 'Hide' etc. */ String filterText = tabManager.getTabFilter(ChatTabManager.ChatTab.PUBLIC); /* getTabState (<Integer ChatTab ID>) -- Returns integer of the chat state */ boolean isOpen = tabManager.getTabState(ChatTabManager.ChatTab.PUBLIC) == ChatTabManager.TabState.OPEN; /* isTabOpen (<Integer ChatTab ID>) -- Returns whether or not the specified tab is open */ boolean isGameTabOpen = tabManager.isTabOpen(ChatTabManager.ChatTab.GAME); /* getCurrentTab () -- Returns the ID of the tab that is currently open */ int currentTab = tabManager.getCurrentTab(); /* getTabName (<Integer ChatTab ID>) -- Returns String value of that tab (eg. 'Private') */ tabManager.getTabName(ChatTabManager.ChatTab.PRIVATE); A thank you to Cyro for assisting me while creating this. Edited December 19, 2013 by Parenthesis 1 Link to comment Share on other sites More sharing options...
Program Posted December 18, 2013 Share Posted December 18, 2013 Very useful thanks a lot for this man:) 1 Link to comment Share on other sites More sharing options...
liverare Posted December 18, 2013 Share Posted December 18, 2013 (edited) if(tab != ChatTab.GAME || tab != ChatTab.ALL) I believe you were supposed to use "&&". I got to work on making a fully working API you can use. Edited the API to make it not require Client to be a constant parameter for methods. However, an enum couldn't be used to achieve this. Edited December 19, 2013 by liverare 1 Link to comment Share on other sites More sharing options...
Parenthesis Posted December 19, 2013 Author Share Posted December 19, 2013 if(tab != ChatTab.GAME || tab != ChatTab.ALL) I believe you were supposed to use "&&". I got to work on making a fully working API you can use. Example of use: if (!ChatTab.TRADE.isFilterSetToFriends(client)) ChatTab.interact(client, ChatTab.TRADE, ChatTab.ACTION_FRIENDS); else if (!ChatTab.PUBLIC.isSelected(client)) ChatTab.interact(client, ChatTab.PUBLIC, ChatTab.ACTION_VIEW); -Check to see if trade tab's filter is not set to friends. --Set the trade tab's filter to friends. -Else check to see if the public tab's filter is not set to selected. --Select the public tab. Enjoy. You're right on those conditional operators, don't know how I missed that. That's an amazing API! way more useful than my current one. I'll put it up in the main post. Link to comment Share on other sites More sharing options...