Jonasstams Posted July 13, 2015 Share Posted July 13, 2015 Hey guys, I'm making my first script and I have a question: - How can I select something like a chair after it clicks on build chairspace (picture 1) this is my code: package core; import nodes.TabMaking; import nodes.Unnoting; import org.osbot.rs07.api.Mouse; import org.osbot.rs07.api.model.Entity; import org.osbot.rs07.api.model.NPC; import org.osbot.rs07.api.ui.Option; import org.osbot.rs07.input.mouse.ClickMouseEvent; import org.osbot.rs07.input.mouse.EntityDestination; import org.osbot.rs07.script.Script; import org.osbot.rs07.script.ScriptManifest; import utils.Walking; import java.awt.Rectangle; import java.util.ArrayList; import java.util.Collections; import java.util.List; @ScriptManifest(name = "JonesConstruction", author = "Jones", version = 0.1, info = "Construction Script made by Jones", logo = "") public class JonesConstruction extends Script { private String status = ""; @Override public void onStart() { } private enum State { GOING_OUTSIDE,GOING_INSIDE, SEARCHING_CHAIR, MAKING_CHAIRS, UNNOTING, WAITING }; private State getState() { Entity portal = objects.closest("Portal"); if (inventory.contains(960)) { if (myPlayer().getX() > 12000) { if(myPlayer().isAnimating()){ return State.MAKING_CHAIRS; }else{ return State.SEARCHING_CHAIR;} }else{ return State.GOING_INSIDE; }else{ if(myPlayer().getX() > 12000) { return State.GOING_OUTSIDE; }else{ return State.UNNOTING; } } } @Override public int onLoop() throws InterruptedException { switch(getState()){ case GOING_INSIDE: log("Searching for portal"); Entity portal = objects.closest("Portal"); if(portal != null ){ portal.interact("Enter"); sleep(random(1000,1250)); keyboard.typeString("2"); sleep(random(1000,1500)); } break; case SEARCHING_CHAIR: log("Searching for Chair space"); Entity chairSpace = objects.closest(4517); while(!inventory.isEmptyExcept(961, 995, 4820, 8794,2347)){ if(chairSpace != null){ chairSpace.interact("Build"); Entity rockingChair = objects.closest("Rocking chair"); rockingChair.interact("Build"); Entity chair = objects.closest("Chair"); chair.interact("Remove"); keyboard.typeString("1"); } } break; case GOING_OUTSIDE: log("Searching for portal"); portal = objects.closest("Portal"); portal.interact("Enter"); break; case UNNOTING: inventory.interact(961,"Use"); if(inventory.isItemSelected()){ NPC Phials = npcs.closest(1614); keyboard.typeString("3"); } break; default: break; } return random(200,300); } private boolean hoverEntityOption(Entity entity, String option) throws InterruptedException { if(entity == null) return false; if(menu.isOpen()) { List<Option> options = menu.getMenu(); if(options != null) { Rectangle optionRec = null; for(int index = 0; index < options.size(); index++) { if(options.get(index).action.equals(option)) { optionRec = menu.getOptionRectangle(index); if(optionRec != null) { if(!optionRec.contains(mouse.getPosition())) { int x = menu.getX() + Script.random(10, 160); int y = menu.getY() + 23 + index * 15; Script.sleep(Script.random(200, 400)); return mouse.move(x, y); } } } } } } else { EntityDestination ed = new EntityDestination(bot, entity); mouse.click(ed, true); } return false; } } I hope some people can help me and give me some tips on how to program better. THANKS A LOT! Quote Link to comment Share on other sites More sharing options...
Joseph Posted July 13, 2015 Share Posted July 13, 2015 Use widgets. On the client go to the setting. Enable widget debugger. Simply just interact with the widget Quote Link to comment Share on other sites More sharing options...
Apaec Posted July 13, 2015 Share Posted July 13, 2015 RS2Widget w = widgets.get(int parent id, int child id); //parennt and child ids can be found using widget debugger in settings tab if (w != null && w.isVisible()) w.interact("Build"); //or whatever the action is PS in future, post code using the code button not the quote button apa Quote Link to comment Share on other sites More sharing options...
Joseph Posted July 13, 2015 Share Posted July 13, 2015 RS2Widget w = widgets.get(int parent id, int child id); //parennt and child ids can be found using widget debugger in settings tab if (w != null && w.isVisible()) w.interact("Build"); //or whatever the action is PS in future, post code using the code button not the quote button apa or just force left click with w.interact(); 1 Quote Link to comment Share on other sites More sharing options...
Jonasstams Posted July 14, 2015 Author Share Posted July 14, 2015 oke thank you guys you helped me a lot! Quote Link to comment Share on other sites More sharing options...