Check if two buttons are being pressed at once?

Discussion in 'Javascript/Plugin Support' started by peq42_, Jul 8, 2019.

Thread Status:
Not open for further replies.
  1. peq42_

    peq42_ Yeet Veteran

    Messages:
    452
    Likes Received:
    267
    Location:
    Brazil
    First Language:
    Portuguese(BR)
    Primarily Uses:
    RMMV
    I'm trying to add gamepad support to a game of mine, but due to how limited the amount of buttons on it is, and the fact that I added extra commands to the game(such as fire, drop things,etc) I need a system capable of detecting two buttons pressed at once( and/or one being hold then the other being pressed).

    I tried creating an alias for the Scene_Map.updateScene that would check when two buttons are pressed at once, but doesn't seem to work(It detects individual button presses, but not multiple at once). Any ideas?

    My code so far:

    Code:
    var keyconfig_alias = Scene_Map.prototype.updateScene;
       Scene_Map.prototype.updateScene = function() {
         keyconfig_alias.call(this);
    
           if (!SceneManager.isSceneChanging() && ($gameMap._mapId==1 || $gameMap._mapId==5)) {
    
           if (Input.isTriggered('weapon')||(Input.isTriggered('fire') && Input.isTriggered('ok'))) {
            ///use weapon
    
            if(weapondelay===0 && chatopen===false){
    
                $gameTemp.reserveCommonEvent(2);
            }
    
    
        }
         if ((Input.isTriggered('shield') || (Input.isTriggered('fire') && Input.isTriggered('cancel'))) && chatopen===false) {
             ///equip shield
            $gameTemp.reserveCommonEvent(3);
        }
        else if((Input.isTriggered('potion') || (Input.isTriggered('fire') && Input.isTriggered('menu'))) && chatopen===false){
            ///consume potion
            $gameTemp.reserveCommonEvent(7);
        }
        else if((Input.isTriggered('dropweapon') || (Input.isTriggered('drop') && Input.isTriggered('ok'))) && chatopen===false){
            ///drop weapon
            $gameTemp.reserveCommonEvent(8);
        }
        else if((Input.isTriggered('droppotion') || (Input.isTriggered('drop') && Input.isTriggered('cancel'))) && chatopen===false){
            ///drop heal
            $gameTemp.reserveCommonEvent(10);
        }
        else if((Input.isTriggered('dropshield') || (Input.isTriggered('drop') && Input.isTriggered('menu'))) && chatopen===false){
            ///drop shield
            $gameTemp.reserveCommonEvent(9);
        }
              
           }
       };
     
    #1
  2. caethyril

    caethyril ^_^ Veteran

    Messages:
    1,026
    Likes Received:
    635
    Location:
    UK
    First Language:
    English
    Primarily Uses:
    RMMV
    Maybe try Input.isPressed() instead of isTriggered()? I think isTriggered is a single-frame thing, fired when the button is initially pressed down. For comparison, the Conditional Branch check (event command) uses isPressed. Relevant code can be found in rpg_core.js, under Input. :)
     
    #2
    peq42_ likes this.
  3. peq42_

    peq42_ Yeet Veteran

    Messages:
    452
    Likes Received:
    267
    Location:
    Brazil
    First Language:
    Portuguese(BR)
    Primarily Uses:
    RMMV
    That worked perfectly, thank you!
     
    #3
    caethyril likes this.
  4. Kes

    Kes Global Moderators Global Mod

    Messages:
    20,331
    Likes Received:
    10,397
    First Language:
    English
    Primarily Uses:
    RMVXA

    This thread is being closed, due to being solved. If for some reason you would like this thread re-opened, please report this post and leave a message why. Thank you.

     
    #4
Thread Status:
Not open for further replies.

Share This Page