Jump to content

Chaoticw3g

Members
  • Posts

    3
  • Joined

  • Last visited

  • Feedback

    0%

Posts posted by Chaoticw3g

  1. EDIT: this question has been resolved and spoiler'd.

    I instead used  getClient().getTooltip()  to get the "up-text" (hover text, in the top left) and parsed out the item name.

     

    Original question is below:

    I'm working on an auto-drop script just for personal use, and I'm trying to work out how I want to select which items in my inventory to drop.  Currently, my script listens for Ctrl-F, and selects the item that's selected in the inventory, if one is selected.  In my opinion, this feels clunky.
     
    Is it possible to listen for an interaction between the player and an item, and to handle an event based on the interaction?  I'm thinking of being able to hold Ctrl and "examine" an item in the inventory to select it, rather than toggling a state (selecting an item), pressing a hotkey, and then toggling again (deselecting the item).
     
    I had the idea to keep track of each different item in the inventory (i.e. HashMap<String, ItemDefinition>), storing its "examine" text, and listening for a message similar to one that's stored, but as far as I can tell that would be massively inefficient and a pain to keep up with.
     
    In other words, is there a method that would perform as if  onInteract(ItemInteractEvent e)?  TIA!

     

    For reference, my handling code now (spoiler'd to prevent massive post)

     

    DropAll.java (subclass of Script)

    @Override
    public void onStart() {
        // add custom key listener
        this.getBot().getCanvas().addKeyListener(new com.github.chaoticweg.DropAll.KeyListener());
    }
    
    // ...
    
    public void selectNewItem() {
        String newItem = this.getInventory().getSelectedItemName();
        if (newItem == null) newItem = "";
    
        selectedItem = newItem; // selectedItem declared above in class
        this.getInventory().deselectItem();
    }
    

    KeyListener.java (implements java.awt.event.KeyListener)

    private boolean armed = false;
    private DropAll script;
    
    public KeyListener(DropAll script) {
        this.script = script;
    }
    
    @Override
    public void keyTyped(KeyEvent e) {
        // do nothing
    }
    
    @Override
    public void keyPressed(KeyEvent e) {
        if (e.getKeyCode() == KeyEvent.VK_CONTROL)
            armed = true;
        if (e.getKeyCode() == KeyEvent.VK_F)
            script.selectNewItem();
    }
    
    @Override
    public void keyReleased(KeyEvent e) {
        if (e.getKeyCode() == KeyEvent.VK_CONTROL)
            armed = false;
    }
    
  2. Hey all, first post here.  Been digging around the API docs for a while to solve a (hopefully) simple problem with no luck, so I thought I'd get a second opinion.

     

    I'm writing myself a basic drop-all script for low-level fletching, and I'm trying to find ways to toggle the dropping logic on and off.  My idea is to be able to leave the script running and just use some sort of a button or key combination to send a signal to the script that would cause it to start dropping.  The idea is to avoid the clicks of re-running the script every time I want to drop all.

     

    Is there a way to add a key listener to the script?  I can easily create a class implementing  java.awt.event.KeyListener  and handle key events to listen for  Ctrl+Shift+Backslash,  for instance, but I can't find a way to tell the script to use that listener.

     

    I'm sure what I'm trying to do is simple, but I couldn't find anything in the scripting tutorial or help sections.  I should add that I'm familiar with Java and coding in general, but I'm brand new to the OSBot API, save for what I've read and tinkered with for the past few hours.  TIA!

×
×
  • Create New...