Jono99

Veteran
Veteran
Joined
May 8, 2015
Messages
76
Reaction score
17
First Language
English
Primarily Uses
RMVXA
This script works with Gamepad Extender by Lone Wolf to make the default scripts work well with a controller. It does not break things for keyboard users, so players using whatever they desire should be able to play with optimal controls.


To use this script, copy and paste it into your game under materials and above main, but Gamepad Extender must also be in the game under materials and above GE Game Adapter. You can get it here: http://forums.rpgmakerweb.com/index.php?/topic/1284-gamepad-extender-v11-2202015


Code:
#==============================================================================
# Gamepad Extender Game Adapter
# by Jono99
#------------------------------------------------------------------------------
# This allows the game commands to be handled in a way more friendly to controller
# input. Based off Gamepad Extender by Lone Wolf and requires Gamepad Extender
# in order to function.
# Link to download Gamepad Extender: http://forums.rpgmakerweb.com/index.php?/topic/1284-gamepad-extender-v11-2202015/
#------------------------------------------------------------------------------
# Changelog
# 1.0.0: Initial release
# 1.0.1: Fixed bug where the save menu would not accept input from the analogue stick and the dpad's input would be duplicated (only occured when MenuInput was set to 2)
#==============================================================================
module GEGAOptions
  # Use the Start button instead of the B button to pause the game
  StartForPause = true
 
  # Determine what input device is used for the menus.
  # 0 for just the dpad
  # 1 for just the left analogue stick
  # 2 for both
  MenuInput = 2
 
  # Determine what input device is used for moving around the map.
  # 0 for just the dpad
  # 1 for just the left analogue stick
  # 2 for both
  MoveInput = 2
end






#==============================================================================
# DO NOT EDIT UNLESS YOU KNOW WHAT YOU ARE DOING!
#==============================================================================
if defined?(WolfPad) == nil
  msgbox("WARNING: GamePad Extender is either missing or executes sometime after this. To avoid issues, GE Game Adapter will not execute!")
elsif GEGAOptions::StartForPause.class != TrueClass
  msgbox("WARNING: StartForPause doesn't have a valid value. It must be true or false. To avoid issues, GE Game Adapter will not execute!")
elsif GEGAOptions::MenuInput.class != Fixnum || GEGAOptions::MenuInput > 2
  msgbox("WARNING: MenuInput doesn't have a valid value. It must be 0, 1, or 2. To avoid issues, GE Game Adapter will not execute!")
elsif GEGAOptions::MoveInput.class != Fixnum || GEGAOptions::MoveInput > 2
  msgbox("WARNING: MoveInput doesn't have a valid value. It must be 0, 1, or 2. To avoid issues, GE Game Adapter will not execute!")
else
  module WolfPad
    def self.dird4(p_i = 0)
      if press?(:UP, p_i)
       8
      elsif press?(:RIGHT, p_i)
       6
      elsif press?(:LEFT, p_i)
       4
      elsif press?(:DOWN, p_i)
       2
      else
       0
      end
    end
    def self.dird8(p_i = 0)
      if press?(:UP, p_i) and press?(:LEFT, p_i)
       7
      elsif press?(:UP, p_i) and press?(:RIGHT, p_i)
       9
      elsif press?(:DOWN, p_i) and press?(:LEFT, p_i)
       1
      elsif press?(:DOWN, p_i) and press?(:RIGHT, p_i)
       3
     else
       dird4(p_i)
      end
    end
  end
  class Game_Player
    #--------------------------------------------------------------------------
    # * Determine if Dashing
    #--------------------------------------------------------------------------
    def dash?
      return false if @move_route_forcing
      return false if $game_map.disable_dash?
      return false if vehicle
      return Input.press?(PadConfig.dash)
    end
    #--------------------------------------------------------------------------
    # * Processing of Movement via Input from Directional Buttons
    #--------------------------------------------------------------------------
    def move_by_input
      return if !movable? || $game_map.interpreter.running?
      if WolfPad.plugged_in? == false
        gega_move_by_input_input(Input.dir4)
      else
        gega_move_by_input_input(WolfPad.dird4) if GEGAOptions::MoveInput == 0 || GEGAOptions::MoveInput == 2
        gega_move_by_input_input(WolfPad.lstick4) if GEGAOptions::MoveInput > 0
      end
    end
    def gega_move_by_input_input(dir4)
      move_straight(dir4) if dir4 > 0
    end
    #--------------------------------------------------------------------------
    # * Processing When Not Moving
    #     last_moving : Was it moving previously?
    #--------------------------------------------------------------------------
    def update_nonmoving(last_moving)
      return if $game_map.interpreter.running?
      if last_moving
        $game_party.on_player_walk
        return if check_touch_event
      end
      if movable? && Input.trigger?(PadConfig.confirm)
        return if get_on_off_vehicle
        return if check_action_event
      end
      update_encounter if last_moving
    end
  end
  class Window_Selectable
    #--------------------------------------------------------------------------
    # * Cursor Movement Processing
    #--------------------------------------------------------------------------
    def process_cursor_move
      return unless cursor_movable?
      last_index = @index
      if WolfPad.plugged_in?
        gega_process_cursor_move_input(:UP, :DOWN, :LEFT, :RIGHT) if GEGAOptions::MenuInput == 0 || GEGAOptions::MenuInput == 2
        gega_process_cursor_move_input(:L_UP, :L_DOWN, :L_LEFT, :L_RIGHT) if GEGAOptions::MenuInput > 0
      else
        gega_process_cursor_move_input(:UP, :DOWN, :LEFT, :RIGHT)
      end
      cursor_pagedown   if !handle?(:pagedown) && Input.trigger?(PadConfig.page_down)
      cursor_pageup     if !handle?(:pageup)   && Input.trigger?(PadConfig.page_up)
      Sound.play_cursor if @index != last_index
    end
    def gega_process_cursor_move_input(up, down, left, right)
      cursor_down (Input.trigger?(down)) if Input.repeat?(down)
      cursor_up   (Input.trigger?(up))    if Input.repeat?(up)
      cursor_right(Input.trigger?(right)) if Input.repeat?(right)
      cursor_left (Input.trigger?(left))  if Input.repeat?(left)
    end
    #--------------------------------------------------------------------------
    # * Handling Processing for OK and Cancel Etc.
    #--------------------------------------------------------------------------
    def process_handling
      return unless open? && active
      return process_ok       if ok_enabled?        && Input.trigger?(PadConfig.confirm)
      return process_cancel   if cancel_enabled?    && Input.trigger?(PadConfig.cancel)
      return process_pagedown if handle?(:pagedown) && Input.trigger?(PadConfig.page_down)
      return process_pageup   if handle?(:pageup)   && Input.trigger?(PadConfig.page_up)
    end
  end
  class Window_ShopNumber
    #--------------------------------------------------------------------------
    # * Update Quantity
    #--------------------------------------------------------------------------
    def update_number
      if WolfPad.plugged_in?
        gega_update_number_input(:RIGHT, :LEFT, :UP, :DOWN) if GEGAOptions::MenuInput == 0 || GEGAOptions::MenuInput == 2
        gega_update_number_input(:L_RIGHT, :L_LEFT, :L_UP, :L_DOWN) if GEGAOptions::MenuInput > 0
      else
        gega_update_number_input(:RIGHT, :LEFT, :UP, :DOWN)
      end
    end
  end
  def gega_update_number_input(right, left, up, down)
    change_number(1)   if Input.repeat?(right)
    change_number(-1)  if Input.repeat?(left)
    change_number(10)  if Input.repeat?(up)
    change_number(-10) if Input.repeat?(down)
  end
  class Window_NameInput
    #--------------------------------------------------------------------------
    # * Handling Processing for OK and Cancel Etc.
    #--------------------------------------------------------------------------
    def process_handling
      return unless open? && active
      process_jump if Input.trigger?(:A) && WolfPad.plugged_in? == false
      process_back if Input.repeat?(PadConfig.cancel)
      process_ok   if Input.trigger?(PadConfig.confirm)
    end
  end
  class Window_NumberInput
    #--------------------------------------------------------------------------
    # * Cursor Movement Processing
    #--------------------------------------------------------------------------
    def process_cursor_move
      return unless active
      last_index = @index
      if WolfPad.plugged_in?
        gega_process_cursor_move_input(:LEFT, :RIGHT) if GEGAOptions::MenuInput == 0 || GEGAOptions::MenuInput == 2
        gega_process_cursor_move_input(:L_LEFT, :L_RIGHT) if GEGAOptions::MenuInput > 0
      else
        gega_process_cursor_move_input(:LEFT, :RIGHT)
      end
      Sound.play_cursor if @index != last_index
    end
    def gega_process_cursor_move_input(left, right)
      cursor_right(Input.trigger?(right)) if Input.repeat?(right)
      cursor_left (Input.trigger?(left))  if Input.repeat?(left)
    end
    #--------------------------------------------------------------------------
    # * Change Processing for Digits
    #--------------------------------------------------------------------------
    def process_digit_change
      return unless active
      if WolfPad.plugged_in?
        gega_process_digit_change_input(:UP, :DOWN) if GEGAOptions::MenuInput == 0 || GEGAOptions::MenuInput == 2
        gega_process_digit_change_input(:L_UP, :L_DOWN) if GEGAOptions::MenuInput > 0
      else
        gega_process_digit_change_input(:UP, :DOWN)
      end
    end
    def gega_process_digit_change_input(up, down)
      if Input.repeat?(up) || Input.repeat?(down)
        Sound.play_cursor
        place = 10 ** (@digits_max - 1 - @index)
        n = @number / place % 10
        @number -= n * place
        n = (n + 1) % 10 if Input.repeat?(up)
        n = (n + 9) % 10 if Input.repeat?(down)
        @number += n * place
        refresh
      end
    end
    #--------------------------------------------------------------------------
    # * Handling Processing for OK and Cancel
    #--------------------------------------------------------------------------
    def process_handling
      return unless active
      return process_ok     if Input.trigger?(PadConfig.confirm)
      return process_cancel if Input.trigger?(PadConfig.cancel)
    end
  end
  class Window_Message
    #--------------------------------------------------------------------------
    # * Update Fast Forward Flag
    #--------------------------------------------------------------------------
    def update_show_fast
      @show_fast = true if Input.trigger?(PadConfig.confirm)
    end
    #--------------------------------------------------------------------------
    # * Input Pause Processing
    #--------------------------------------------------------------------------
    def input_pause
      self.pause = true
      wait(10)
      Fiber.yield until Input.trigger?(PadConfig.cancel) || Input.trigger?(PadConfig.confirm)
      Input.update
      self.pause = false
    end
  end
  class Window_ScrollText
    #--------------------------------------------------------------------------
    # * Determine if Fast Forward
    #--------------------------------------------------------------------------
    def show_fast?
      !$game_message.scroll_no_fast && (Input.press?(PadConfig.dash) || Input.press?(PadConfig.confirm))
    end
  end
  class Scene_Map
    #--------------------------------------------------------------------------
    # * Determine if Menu is Called due to Cancel Button
    #--------------------------------------------------------------------------
    def update_call_menu
      if $game_system.menu_disabled || $game_map.interpreter.running?
        @menu_calling = false
      else
        if WolfPad.plugged_in? && GEGAOptions::StartForPause
          @menu_calling ||= Input.trigger?(:START)
        else
          @menu_calling ||= Input.trigger?(:B)
        end
        call_menu if @menu_calling && !$game_player.moving?
      end
    end
  end
  class Scene_File
    #--------------------------------------------------------------------------
    # * Update Save File Selection
    #--------------------------------------------------------------------------
    def update_savefile_selection
      return on_savefile_ok     if Input.trigger?(PadConfig.confirm)
      return on_savefile_cancel if Input.trigger?(PadConfig.cancel)
      update_cursor
    end
    #--------------------------------------------------------------------------
    # * Update Cursor
    #--------------------------------------------------------------------------
    def update_cursor
      last_index = @index
      if WolfPad.plugged_in?
        gega_update_cursor_input(:UP, :DOWN) if GEGAOptions::MenuInput == 0 || GEGAOptions::MenuInput == 2
        gega_update_cursor_input(:L_UP, :L_DOWN) if GEGAOptions::MenuInput > 0
      else
        gega_update_cursor_input(:UP, :DOWN)
      end
      cursor_pagedown   if Input.trigger?(PadConfig.page_down)
      cursor_pageup     if Input.trigger?(PadConfig.page_up)
      if @index != last_index
        Sound.play_cursor
        @savefile_windows[last_index].selected = false
        @savefile_windows[@index].selected = true
      end
    end
  end
  def gega_update_cursor_input(up, down)
    cursor_down (Input.trigger?(down))  if Input.repeat?(down)
    cursor_up   (Input.trigger?(up))    if Input.repeat?(up)
  end
  class Scene_Gameover
    #--------------------------------------------------------------------------
    # * Frame Update
    #--------------------------------------------------------------------------
    def update
      super
      goto_title if Input.trigger?(PadConfig.confirm)
    end
  end
end

Code:
#==============================================================================
# Gamepad Extender Game Adapter
# by Jono99
#------------------------------------------------------------------------------
# This allows the game commands to be handled in a way more friendly to controller
# input. Based off Gamepad Extender by Lone Wolf and requires Gamepad Extender
# in order to function.
# Link to download Gamepad Extender: http://forums.rpgmakerweb.com/index.php?/topic/1284-gamepad-extender-v11-2202015/
#------------------------------------------------------------------------------
# Changelog
# 1.0.0: Initial release
# 1.0.1: Fixed bug where the save menu would not accept input from the analogue stick and the dpad's input would be duplicated (only occured when MenuInput was set to 2)
# 1.0.2: Removed checks to see if values in GEGAOptions are acceptable values (they caused a problem where the script would not run in StartForPause was set to false)
#==============================================================================
module GEGAOptions
  # Use the Start button instead of the B button to pause the game
  StartForPause = true
 
  # Determine what input device is used for the menus.
  # 0 for just the dpad
  # 1 for just the left analogue stick
  # 2 for both
  MenuInput = 2
 
  # Determine what input device is used for moving around the map.
  # 0 for just the dpad
  # 1 for just the left analogue stick
  # 2 for both
  MoveInput = 2
end






#==============================================================================
# DO NOT EDIT UNLESS YOU KNOW WHAT YOU ARE DOING!
#==============================================================================
if defined?(WolfPad) == nil
  msgbox("WARNING: GamePad Extender is either missing or executes sometime after this. To avoid issues, GE Game Adapter will not execute!")
else
  module WolfPad
    def self.dird4(p_i = 0)
      if press?(:UP, p_i)
       8
      elsif press?(:RIGHT, p_i)
       6
      elsif press?(:LEFT, p_i)
       4
      elsif press?(:DOWN, p_i)
       2
      else
       0
      end
    end
    def self.dird8(p_i = 0)
      if press?(:UP, p_i) and press?(:LEFT, p_i)
       7
      elsif press?(:UP, p_i) and press?(:RIGHT, p_i)
       9
      elsif press?(:DOWN, p_i) and press?(:LEFT, p_i)
       1
      elsif press?(:DOWN, p_i) and press?(:RIGHT, p_i)
       3
     else
       dird4(p_i)
      end
    end
  end
  class Game_Player
    #--------------------------------------------------------------------------
    # * Determine if Dashing
    #--------------------------------------------------------------------------
    def dash?
      return false if @move_route_forcing
      return false if $game_map.disable_dash?
      return false if vehicle
      return Input.press?(PadConfig.dash)
    end
    #--------------------------------------------------------------------------
    # * Processing of Movement via Input from Directional Buttons
    #--------------------------------------------------------------------------
    def move_by_input
      return if !movable? || $game_map.interpreter.running?
      if WolfPad.plugged_in? == false
        gega_move_by_input_input(Input.dir4)
      else
        gega_move_by_input_input(WolfPad.dird4) if GEGAOptions::MoveInput == 0 || GEGAOptions::MoveInput == 2
        gega_move_by_input_input(WolfPad.lstick4) if GEGAOptions::MoveInput > 0
      end
    end
    def gega_move_by_input_input(dir4)
      move_straight(dir4) if dir4 > 0
    end
    #--------------------------------------------------------------------------
    # * Processing When Not Moving
    #     last_moving : Was it moving previously?
    #--------------------------------------------------------------------------
    def update_nonmoving(last_moving)
      return if $game_map.interpreter.running?
      if last_moving
        $game_party.on_player_walk
        return if check_touch_event
      end
      if movable? && Input.trigger?(PadConfig.confirm)
        return if get_on_off_vehicle
        return if check_action_event
      end
      update_encounter if last_moving
    end
  end
  class Window_Selectable
    #--------------------------------------------------------------------------
    # * Cursor Movement Processing
    #--------------------------------------------------------------------------
    def process_cursor_move
      return unless cursor_movable?
      last_index = @index
      if WolfPad.plugged_in?
        gega_process_cursor_move_input(:UP, :DOWN, :LEFT, :RIGHT) if GEGAOptions::MenuInput == 0 || GEGAOptions::MenuInput == 2
        gega_process_cursor_move_input(:L_UP, :L_DOWN, :L_LEFT, :L_RIGHT) if GEGAOptions::MenuInput > 0
      else
        gega_process_cursor_move_input(:UP, :DOWN, :LEFT, :RIGHT)
      end
      cursor_pagedown   if !handle?(:pagedown) && Input.trigger?(PadConfig.page_down)
      cursor_pageup     if !handle?(:pageup)   && Input.trigger?(PadConfig.page_up)
      Sound.play_cursor if @index != last_index
    end
    def gega_process_cursor_move_input(up, down, left, right)
      cursor_down (Input.trigger?(down)) if Input.repeat?(down)
      cursor_up   (Input.trigger?(up))    if Input.repeat?(up)
      cursor_right(Input.trigger?(right)) if Input.repeat?(right)
      cursor_left (Input.trigger?(left))  if Input.repeat?(left)
    end
    #--------------------------------------------------------------------------
    # * Handling Processing for OK and Cancel Etc.
    #--------------------------------------------------------------------------
    def process_handling
      return unless open? && active
      return process_ok       if ok_enabled?        && Input.trigger?(PadConfig.confirm)
      return process_cancel   if cancel_enabled?    && Input.trigger?(PadConfig.cancel)
      return process_pagedown if handle?(:pagedown) && Input.trigger?(PadConfig.page_down)
      return process_pageup   if handle?(:pageup)   && Input.trigger?(PadConfig.page_up)
    end
  end
  class Window_ShopNumber
    #--------------------------------------------------------------------------
    # * Update Quantity
    #--------------------------------------------------------------------------
    def update_number
      if WolfPad.plugged_in?
        gega_update_number_input(:RIGHT, :LEFT, :UP, :DOWN) if GEGAOptions::MenuInput == 0 || GEGAOptions::MenuInput == 2
        gega_update_number_input(:L_RIGHT, :L_LEFT, :L_UP, :L_DOWN) if GEGAOptions::MenuInput > 0
      else
        gega_update_number_input(:RIGHT, :LEFT, :UP, :DOWN)
      end
    end
  end
  def gega_update_number_input(right, left, up, down)
    change_number(1)   if Input.repeat?(right)
    change_number(-1)  if Input.repeat?(left)
    change_number(10)  if Input.repeat?(up)
    change_number(-10) if Input.repeat?(down)
  end
  class Window_NameInput
    #--------------------------------------------------------------------------
    # * Handling Processing for OK and Cancel Etc.
    #--------------------------------------------------------------------------
    def process_handling
      return unless open? && active
      process_jump if Input.trigger?(:A) && WolfPad.plugged_in? == false
      process_back if Input.repeat?(PadConfig.cancel)
      process_ok   if Input.trigger?(PadConfig.confirm)
    end
  end
  class Window_NumberInput
    #--------------------------------------------------------------------------
    # * Cursor Movement Processing
    #--------------------------------------------------------------------------
    def process_cursor_move
      return unless active
      last_index = @index
      if WolfPad.plugged_in?
        gega_process_cursor_move_input(:LEFT, :RIGHT) if GEGAOptions::MenuInput == 0 || GEGAOptions::MenuInput == 2
        gega_process_cursor_move_input(:L_LEFT, :L_RIGHT) if GEGAOptions::MenuInput > 0
      else
        gega_process_cursor_move_input(:LEFT, :RIGHT)
      end
      Sound.play_cursor if @index != last_index
    end
    def gega_process_cursor_move_input(left, right)
      cursor_right(Input.trigger?(right)) if Input.repeat?(right)
      cursor_left (Input.trigger?(left))  if Input.repeat?(left)
    end
    #--------------------------------------------------------------------------
    # * Change Processing for Digits
    #--------------------------------------------------------------------------
    def process_digit_change
      return unless active
      if WolfPad.plugged_in?
        gega_process_digit_change_input(:UP, :DOWN) if GEGAOptions::MenuInput == 0 || GEGAOptions::MenuInput == 2
        gega_process_digit_change_input(:L_UP, :L_DOWN) if GEGAOptions::MenuInput > 0
      else
        gega_process_digit_change_input(:UP, :DOWN)
      end
    end
    def gega_process_digit_change_input(up, down)
      if Input.repeat?(up) || Input.repeat?(down)
        Sound.play_cursor
        place = 10 ** (@digits_max - 1 - @index)
        n = @number / place % 10
        @number -= n * place
        n = (n + 1) % 10 if Input.repeat?(up)
        n = (n + 9) % 10 if Input.repeat?(down)
        @number += n * place
        refresh
      end
    end
    #--------------------------------------------------------------------------
    # * Handling Processing for OK and Cancel
    #--------------------------------------------------------------------------
    def process_handling
      return unless active
      return process_ok     if Input.trigger?(PadConfig.confirm)
      return process_cancel if Input.trigger?(PadConfig.cancel)
    end
  end
  class Window_Message
    #--------------------------------------------------------------------------
    # * Update Fast Forward Flag
    #--------------------------------------------------------------------------
    def update_show_fast
      @show_fast = true if Input.trigger?(PadConfig.confirm)
    end
    #--------------------------------------------------------------------------
    # * Input Pause Processing
    #--------------------------------------------------------------------------
    def input_pause
      self.pause = true
      wait(10)
      Fiber.yield until Input.trigger?(PadConfig.cancel) || Input.trigger?(PadConfig.confirm)
      Input.update
      self.pause = false
    end
  end
  class Window_ScrollText
    #--------------------------------------------------------------------------
    # * Determine if Fast Forward
    #--------------------------------------------------------------------------
    def show_fast?
      !$game_message.scroll_no_fast && (Input.press?(PadConfig.dash) || Input.press?(PadConfig.confirm))
    end
  end
  class Scene_Map
    #--------------------------------------------------------------------------
    # * Determine if Menu is Called due to Cancel Button
    #--------------------------------------------------------------------------
    def update_call_menu
      if $game_system.menu_disabled || $game_map.interpreter.running?
        @menu_calling = false
      else
        if WolfPad.plugged_in? && GEGAOptions::StartForPause
          @menu_calling ||= Input.trigger?(:START)
        else
          @menu_calling ||= Input.trigger?(:B)
        end
        call_menu if @menu_calling && !$game_player.moving?
      end
    end
  end
  class Scene_File
    #--------------------------------------------------------------------------
    # * Update Save File Selection
    #--------------------------------------------------------------------------
    def update_savefile_selection
      return on_savefile_ok     if Input.trigger?(PadConfig.confirm)
      return on_savefile_cancel if Input.trigger?(PadConfig.cancel)
      update_cursor
    end
    #--------------------------------------------------------------------------
    # * Update Cursor
    #--------------------------------------------------------------------------
    def update_cursor
      last_index = @index
      if WolfPad.plugged_in?
        gega_update_cursor_input(:UP, :DOWN) if GEGAOptions::MenuInput == 0 || GEGAOptions::MenuInput == 2
        gega_update_cursor_input(:L_UP, :L_DOWN) if GEGAOptions::MenuInput > 0
      else
        gega_update_cursor_input(:UP, :DOWN)
      end
      cursor_pagedown   if Input.trigger?(PadConfig.page_down)
      cursor_pageup     if Input.trigger?(PadConfig.page_up)
      if @index != last_index
        Sound.play_cursor
        @savefile_windows[last_index].selected = false
        @savefile_windows[@index].selected = true
      end
    end
  end
  def gega_update_cursor_input(up, down)
    cursor_down (Input.trigger?(down))  if Input.repeat?(down)
    cursor_up   (Input.trigger?(up))    if Input.repeat?(up)
  end
  class Scene_Gameover
    #--------------------------------------------------------------------------
    # * Frame Update
    #--------------------------------------------------------------------------
    def update
      super
      goto_title if Input.trigger?(PadConfig.confirm)
    end
  end
end

There are also scripts out there that will overwrite this script. For this reason, I am taking requests for extension scripts that will add this functionality back in when another script overwrites it (one for GubiD's Tactical Battle System is in the works right now). If you find a script that doesn't work with the base version, post about it in this thread detailing what script conflicts with GE Game Adapter and provide a link to the script, but please test this in a brand new project before posting. I will check the script myself and create an extension script if I encounter the problem or message you telling you that I could not find any conflict.

Code:
#==============================================================================
# Gamepad Extender Game Adapter - Sapphire Action System IV
# by Jono99
#------------------------------------------------------------------------------
# This allows the game commands in SASIV by Khas Arcthunder to be handled in a
# more controller friendly way. It also adds the ability to scroll backwards
# through your skills
#
# Based off of Gamepad Extender by Lone Wolf, GE Game Adapter by Jono99 and
# SASIV by Khas Arcthunder and requires all of the above scripts to function.
#
# It is also recommended that you have the scripts laid out in a specific order:
# Gamepad Extender, GE Game Adapter, SASIV then GEGA - SASIV (this script).
#
# WARNING: This script changes the select skill key for keyboard users. It is
# changed from D to Q and W to scroll back and forth.
#
# Link to download Gamepad Extender: http://forums.rpgmakerweb.com/index.php?/topic/1284-gamepad-extender-v11-2202015/
# Link to download GE Game Adapter: http://forums.rpgmakerweb.com/index.php?/topic/69589-ge-game-adapter/
# Link to download Sapphire Action System IV: http://www.mediafire.com/file/1exy8cl0np2ycts/Sapphire+Action+System+IV+v4.4en.rar
#==============================================================================
# NOTE: This script forces StartForPause to true to avoid problems with other
# settings.
module GEGASAS4Options
  # The button that you press to attack
  AttackButton = :X
 
  # The button that casts a skill
  CastButton = :B
end







if defined?(WolfPad) == nil
  msgbox("WARNING: GamePad Extender is either missing or executes sometime after this. To avoid issues, GEGA - SASIV will not execute!")
elsif defined?(GEGAOptions) == nil
  msgbox("WARNING: GE Game Adapter is either missing or executes sometime after this. To avoid issues, GEGA - SASIV will not execute!")
elsif defined?(Sapphire_Core) == nil
  msgbox("WARNING: Sapphire Action System IV is either missing or executes sometime after this. To avoid issues, GEGA - SASIV will not execute!")
else
  module PadConfig
    def self.dash
      WolfPad.plugged_in? ? :Y : :A
    end
  end
  class Game_Player
    def move_by_input
      return if !movable? || $game_map.interpreter.running?
      gegasas4_dir8 = 0
      if WolfPad.plugged_in?
        if GEGAOptions::MoveInput == 0
          gegasas4_dir8 = WolfPad.dird8
        elsif GEGAOptions::MoveInput == 1
          gegasas4_dir8 = WolfPad.lstick8
        elsif GEGAOptions::MoveInput == 2
          gegasas4_dir8 = WolfPad.dird8
          gegasas4_dir8 = WolfPad.lstick8 if gegasas4_dir8 == 0
        end
      else
        gegasas4_dir8 = Input.dir8
      end
      case gegasas4_dir8
        when 1; move_dpixel(4,2)
        when 2; move_pixel(2,true)
        when 3; move_dpixel(6,2)
        when 4; move_pixel(4,true)
        when 6; move_pixel(6,true)
        when 7; move_dpixel(4,8)
        when 8; move_pixel(8,true)
        when 9; move_dpixel(6,8)
      end
    end
  end
  class Game_Map
    def update_action_system
      if WolfPad.plugged_in?
        gegasas4_update_action_system_input(GEGASAS4Options::AttackButton, GEGASAS4Options::CastButton)
      else
        gegasas4_update_action_system_input(Input::X, Input::Y)
      end
    end
    def gegasas4_update_action_system_input(abutton, cbutton)
      if Input.trigger?(abutton)
        $game_player.attack
      elsif Input.trigger?(cbutton)
        $game_player.cast_skill
      elsif Input.trigger?(PadConfig.page_down)
        $game_player.next_skill
      elsif Input.trigger?(PadConfig.page_up)
        $game_player.prev_skill
      end
    end
  end
  class Game_Player
    def prev_skill
      unless @current_skill[1].nil?
        @current_skill[1] = nil
      end
      skills = $game_party.members[0].skills
      if skills.empty?
        @current_skill = [nil,nil]
      else
        ns = 0
        unless @current_skill[0].nil?
          max = skills.size-1
          for id in 0..max
            ns = (id == 0 ? max : id - 1) if skills[id] == @current_skill[0]
          end
        end
        skills[ns].set_recover
        @current_skill = [skills[ns],skills[ns].particle]
        $game_map.sas_hud.refresh_base
      end
    end
  end
end

Code:
#==============================================================================
# Gamepad Extender Game Adapter - Khas Pixel Movement
# by Jono99
#------------------------------------------------------------------------------
# This allows the Khas Pixel Movement by Khas Arcthunder to be comfortable for
# controller users.
#
# Based off of Gamepad Extender by Lone Wolf, GE Game Adapter by Jono99 and
# Khas Pixel Movement by Khas Arcthunder and requires all of the above scripts
# to function.
#
# Link to download Gamepad Extender: http://forums.rpgmakerweb.com/index.php?/topic/1284-gamepad-extender-v11-2202015/
# Link to download GE Game Adapter: http://forums.rpgmakerweb.com/index.php?/topic/69589-ge-game-adapter/
# Link to download Khas Pixel Movement: http://www.mediafire.com/file/x5pxqmvw59be3zh/%5BACE%5D%5BEN%5D+Khas+Pixel+Movement+1.2.rar
#==============================================================================
if defined?(WolfPad) == nil
  msgbox("WARNING: GamePad Extender is either missing or executes sometime after this. To avoid issues, GEGA - Khas Pixel movement will not execute!")
elsif defined?(GEGAOptions) == nil
  msgbox("WARNING: GE Game Adapter is either missing or executes sometime after this. To avoid issues, GEGA - Khas Pixel movement will not execute!")
elsif defined?(Pixel_Core) == nil
  msgbox("WARNING: Khas Pixel Movement is either missing or executes sometime after this. To avoid issues, GEGA - Khas Pixel movement will not execute!")
else
  class Game_Player
    def pixel_move_by_input
      return if !movable? || $game_map.interpreter.running?
      gegakpm_dir8 = 0
      if WolfPad.plugged_in?
        if GEGAOptions::MoveInput == 0
          gegakpm_dir8 = WolfPad.dird8
        elsif GEGAOptions::MoveInput == 1
          gegakpm_dir8 = WolfPad.lstick8
        elsif GEGAOptions::MoveInput == 2
          gegakpm_dir8 = WolfPad.lstick8
          gegakpm_dir8 = WolfPad.dird8 if gegakpm_dir8 == 5
        end
      else
        gegakpm_dir8 = Input.dir8
      end
      case gegakpm_dir8
        when 1; move_dpixel(4,2)
        when 2; move_pixel(2,true)
        when 3; move_dpixel(6,2)
        when 4; move_pixel(4,true)
        when 6; move_pixel(6,true)
        when 7; move_dpixel(4,8)
        when 8; move_pixel(8,true)
        when 9; move_dpixel(6,8)
      end
    end
  end
end

Code:
#==============================================================================
# Gamepad Extender Game Adapter - Arc Engine
# by Jono99
#------------------------------------------------------------------------------
# This allows the game commands in Arc Engine by Khas Arcthunder to be handled
# in a more controller friendly way.
#
# Based off of Gamepad Extender by Lone Wolf, GE Game Adapter by Jono99 and
# Arc Engine by Khas Arcthunder and requires all of the above scripts to function.
#
# It is reommended that you do not have a controller plugged in until you reach
# the title screen while testing as the menu that pops up before that does not
# play nice with controllers.
#
# It is also recommended that you have the scripts laid out in a specific order:
# Gamepad Extender, GE Game Adapter, Arc Engine then GEGA - Arc Engine (this script).
#
# Link to download Gamepad Extender: http://forums.rpgmakerweb.com/index.php?/topic/1284-gamepad-extender-v11-2202015/
# Link to download GE Game Adapter:
# Link to download Arc Engine: http://www.mediafire.com/?b1x1b18637b1wk2
#==============================================================================

module GEGAACOptions
  def self.jump
    WolfPad.plugged_in? ? :A : :X
  end
  EventInteract = :C
end
module PadConfig
  def self.dash
    WolfPad.plugged_in? ? :L2 : :A
  end
end





if defined?(WolfPad) == nil
  msgbox("WARNING: GamePad Extender is either missing or executes sometime after this. To avoid issues, GEGA Arc Engine will not execute!")
elsif defined?(GEGAOptions) == nil
  msgbox("WARNING: GE Game Adapter is either missing or executes sometime after this. To avoid issues, GEGA Arc Engine will not execute!")
elsif defined?(Arc_Core) == nil
  msgbox("WARNING: Arc Engine is either missing or executes sometime after this. To avoid issues, GEGA Arc Engine will not execute!")
else
  # Put GEGA - Arc Engine code here
  class Game_Player
    def gegaac_groundpound_input(down)
      if Input.trigger?(down)
        if !jump_enabled? && !@groundpound
          stop
          apply_yforce(-Jump_Impulse)
          @groundpound = true
        end
      end
    end
    def arc_update
      try_event if Input.trigger?(GEGAACOptions::EventInteract)
      @wait_c -= 1 if @wait_c > 0
      unless @grab_stair
        if WolfPad.plugged_in?
          gegaac_groundpound_input(:DOWN) if GEGAOptions::MoveInput == 0 || GEGAOptions::MoveInput == 2
          gegaac_groundpound_input(:L_DOWN) if GEGAOptions::MoveInput > 0
        else
          gegaac_groundpound_input(:DOWN)
        end
        @vy += Gravity
        @vy -= Air_Resistance*@vy*@vy/(@wg*Meter_Size) if @vy > Insignificant
      end
      if @tx != nil
        @tx > 0 ? @tx -= 1 : reset_vx
      end
      if @ty != nil
        @ty > 0 ? @ty -= 1 : reset_vy
      end
      if @move_route_forcing
        arc_move
        check_move_route
      else
        update_arcinput
        arc_move
        check_ungrab
      end
      kill if @ay > $game_map.y_limit
      if @vx.abs > Insignificant
        et = event_below_type
        if (@grab_stair || surface_below? || et == 0x01)
          refresh_animation
        elsif et == 0x02
          @pattern = 1
        else
          @pattern = 0
        end
      elsif @grab_stair && @vy.abs > Insignificant
        stair_animation
      else
        @pattern = 1 unless @move_route_forcing
        @atimer = 13
      end
    end
    def update_arcinput
      return if $game_map.interpreter.running? || $game_message.busy? || $game_message.visible
      if WolfPad.plugged_in?
        if GEGAOptions::MoveInput == 0 || GEGAOptions::MoveInput == 2
          try_grab if Input.trigger?(:UP)
        end
        if GEGAOptions::MoveInput > 0
          try_grab if Input.trigger?(:L_UP)
        end
      else
        try_grab if Input.trigger?(:UP)
      end
      if @grab_stair
        gegaac_dir8 = 0
        if WolfPad.plugged_in?
          if GEGAOptions::MoveInput == 0
            gegaac_dir8 = WolfPad.dird8
          elsif GEGAOptions::MoveInput == 1
            gegaac_dir8 = WolfPad.lstick8
          elsif GEGAOptions::MoveInput == 2
            gegaac_dir8 = WolfPad.dird8
            gegaac_dir8 = WolfPad.lstick8 if gegaac_dir8 == 0
          end
        else
          gegaac_dir8 = Input.dir8
        end
        case gegaac_dir8
        when 1
          move_x(-Stair_Speed)
          move_y(Stair_Speed)
        when 2
          reset_vx
          move_y(Stair_Speed)
        when 3
          move_x(Stair_Speed)
          move_y(Stair_Speed)
        when 4
          move_x(-Stair_Speed)
          reset_vy
        when 6
          move_x(Stair_Speed)
          reset_vy
        when 7
          move_x(-Stair_Speed)
          move_y(-Stair_Speed)
        when 8
          reset_vx
          move_y(-Stair_Speed)
        when 9
          move_x(Stair_Speed)
          move_y(-Stair_Speed)
        else
          reset_vx
          reset_vy
        end
        if Input.trigger?(:X)
          apply_yforce(Jump_Impulse)
          Arc_Sound.jump
          @grab_stair = false
          set_direction(@vx > 0 ? 6 : 4)
        end
      else
        gegaac_dir4 = 0
        if WolfPad.plugged_in?
          if GEGAOptions::MoveInput == 0
            gegaac_dir4 = WolfPad.dird4
          elsif GEGAOptions::MoveInput == 1
            gegaac_dir4 = WolfPad.lstick4
          elsif GEGAOptions::MoveInput == 2
            gegaac_dir4 = WolfPad.dird4
            gegaac_dir4 = WolfPad.lstick4 if gegaac_dir4 == 0
          end
        else
          gegaac_dir4 = Input.dir4
        end
        case gegaac_dir4
        when 4
          @vx -= @key_acc
          set_direction(4)
          @deny_resistance = false
          r = (Input.press?(PadConfig.dash) ? Running_Resistance : Body_Resistance)
        when 6
          @vx += @key_acc
          set_direction(6)
          @deny_resistance = false
          r = (Input.press?(PadConfig.dash) ? Running_Resistance : Body_Resistance)
        else
          r = (@wallkick ? Body_Resistance : Stop_Resistance)
        end
        if Input.trigger?(GEGAACOptions.jump)
          if jump_enabled?
            apply_yforce(Jump_Impulse + Jump_RBonus*@vx.abs)
            Arc_Sound.jump
          elsif wkick_left?
            stop
            @wk_pos = [@ax,@ay]
            @wallkick = true
            @deny_resistance = true
            apply_xforce(WKick_XImpulse)
            apply_yforce(WKick_YImpulse)
            Arc_Sound.jump
          elsif wkick_right?
            stop
            @wk_pos = [@ax,@ay]
            @wallkick = true
            @deny_resistance = true
            apply_xforce(-WKick_XImpulse)
            apply_yforce(WKick_YImpulse)
            Arc_Sound.jump
          end
        end
        if @deny_resistance
          @deny_resistance = false
        else
          if @vx.abs > Insignificant
            rb = r*@vx*@vx/@res_coef
            @vx += (@vx > 0 ? -rb : rb)
          end
        end
      end
    end
  end
end

Code:
#==============================================================================
# GEGA - FPLE
# by Jono99
#------------------------------------------------------------------------------
# This allows the movement to work when using GE Game Adapter by Jono99 and FPLE
# by MGC.
#
# This script is based off of Gamepad Extender by Lone Wolf, GE Game Adapter by
# Jono99 and FPLE by MGC and requires all three scripts in order to function.
#
# It is recommended that you have the scripts inserted in this order:
# Gamepad Extender, GE Game Adapter, FPLE then GEGA - FPLE (this script)
# (The placement of the FPLE Addons shouldn't matter.)
#
# Link to download Gamepad Extender: http://forums.rpgmakerweb.com/index.php?/topic/1284-gamepad-extender-v11-2202015/
# Link to download GE Game Adapter: http://forums.rpgmakerweb.com/index.php?/topic/69589-ge-game-adapter/
# Link to download FPLE: http://www.rgss-factory.net/2013/09/10/ace-fple-ace-first-person-labyrinth-explorer/
#==============================================================================
module GEGAFPLEOptions
  # false: Left and right turn while LB and RB strafe.
  # true: LB and RB turn while left and right strafe.
  AlternateControlStyle = false
end






#==============================================================================
# DO NOT EDIT UNLESS YOU KNOW WHAT YOU ARE DOING!
#==============================================================================
if defined?(WolfPad) == nil
  msgbox("WARNING: Gamepad Extender is either missing or executes sometime after this. To avoid issues, GEGA - FPLE will not execute!")
elsif defined?(GEGAOptions) == nil
  msgbox("WARNING: GE Game Adapter is either missing or executes sometime after this. To avoid issues, GEGA - FPLE will not execute!")
elsif defined?(FPLE) == nil
  msgbox("WARNING: FPLE is either missing or executes sometime after this. To avoid issues, GEGA - FPLE will not execute!")
else
  class Game_Player
    #--------------------------------------------------------------------------
    # * Processing of Movement via input from the Directional Buttons
    #--------------------------------------------------------------------------
    def move_by_input
      if $game_system.fple
        if !movable? || $game_map.interpreter.running? then return end
        if Input.press?(PadConfig.page_up)
          gegafple_on_lb
        elsif Input.press?(PadConfig.page_down)
          gegafple_on_rb
        else
          gegafple_dir4 = 0
          if WolfPad.plugged_in?
            if GEGAOptions::MoveInput == 0
              gegafple_dir4 = WolfPad.dird4
            elsif GEGAOptions::MoveInput == 1
              gegafple_dir4 = WolfPad.lstick4
            elsif GEGAOptions::MoveInput == 2
              gegafple_dir4 = WolfPad.lstick4
              gegafple_dir4 = WolfPad.dird4 if gegafple_dir4 == 0 || gegafple_dir4 == 5
            end
          else
            gegafple_dir4 = Input.dir4
          end
          case gegafple_dir4
          when 2; go_backward
          when 4; gegafple_on_left
          when 6; gegafple_on_right
          when 8; go_forward
          end
        end
      else
        move_by_input_fple_game_player
      end
    end
    def gegafple_on_left
      WolfPad.plugged_in? && GEGAFPLEOptions::AlternateControlStyle ? strafe_left : turn_left_90
    end
    def gegafple_on_right
      WolfPad.plugged_in? && GEGAFPLEOptions::AlternateControlStyle ? strafe_right : turn_right_90
    end
    def gegafple_on_lb
      WolfPad.plugged_in? && GEGAFPLEOptions::AlternateControlStyle ? turn_left_90 : strafe_left
    end
    def gegafple_on_rb
      WolfPad.plugged_in? && GEGAFPLEOptions::AlternateControlStyle ? turn_right_90 : strafe_right
    end
  end
end

Code:
#==============================================================================
# GEGA - ISO
# by Jono99
#------------------------------------------------------------------------------
# This allows the movement to work when using GE Game Adapter by Jono99 and ISO
# by MGC.
#
# This script is based off of Gamepad Extender by Lone Wolf, GE Game Adapter by
# Jono99 and ISO by MGC and requires all three scripts in order to function.
#
# It is recommended that you have the scripts inserted in this order:
# Gamepad Extender, GE Game Adapter, ISO then GEGA - ISO (this script)
#
# Link to download Gamepad Extender: http://forums.rpgmakerweb.com/index.php?/topic/1284-gamepad-extender-v11-2202015/
# Link to download GE Game Adapter: http://forums.rpgmakerweb.com/index.php?/topic/69589-ge-game-adapter/
# Link to download ISO: http://www.rgss-factory.net/2012/04/07/xpvxace-mgc-iso-engine/
#==============================================================================
module GEGAISOOptions
  # If true, up, right, down and left will move you up-right, down-right,
  # down-left, and up-left respectively.
  # If false, up, down, left and right will do nothing on their own and will
  # instead require multiple directions to be pressed.
  SideDirections = false
end






#==============================================================================
# DO NOT EDIT UNLESS YOU KNOW WHAT YOU ARE DOING!
#==============================================================================
if defined?(WolfPad) == nil
  msgbox("WARNING: Gamepad Extender is either missing or executes sometime after this. To avoid issues, GEGA - ISO will not execute!")
elsif defined?(GEGAOptions) == nil
  msgbox("WARNING: GE Game Adapter is either missing or executes sometime after this. To avoid issues, GEGA - ISO will not execute!")
elsif defined?(MGC_ISO_Map) == nil
  msgbox("WARNING: ISO is either missing or executes sometime after this. To avoid issues, GEGA - ISO will not execute!")
else
  class Game_Player
    #--------------------------------------------------------------------------
    # * Déplacements du joueur
    #--------------------------------------------------------------------------
    def update_directions
      if WolfPad.plugged_in?
        if GEGAOptions::MoveInput == 0
          dir_value = WolfPad.dird8
        elsif GEGAOptions::MoveInput == 1
          dir_value = WolfPad.lstick8
        elsif GEGAOptions::MoveInput == 2
          dir_value = WolfPad.lstick8
          dir_value = WolfPad.dird8 if dir_value == 0 || dir_value == 5
        end
      else
        dir_value = Input.dir8
      end
      if @move_with_parent && dir_value > 0  && dir_value != 5
        restore_moves
        start_emancipate
      end
      case dir_value
      when 1
        move_straight(2)
      when 2
        move_straight(2) if GEGAISOOptions::SideDirections || !WolfPad.plugged_in?
      when 3
        move_straight(6)
      when 4
        move_straight(4) if GEGAISOOptions::SideDirections || !WolfPad.plugged_in?
      when 7
        move_straight(4)
      when 6
        move_straight(6) if GEGAISOOptions::SideDirections || !WolfPad.plugged_in?
      when 8
        move_straight(8) if GEGAISOOptions::SideDirections || !WolfPad.plugged_in?
      when 9
        move_straight(8)
      end
    end
  end
end

Code:
#==============================================================================
# GEGA - Layy Meta
# by Jono99
#------------------------------------------------------------------------------
# This allows the map rotation to work when using GE Game Adapter by Jono99 and
# Layy by MGC.
#
# This script is based off of Gamepad Extender by Lone Wolf, GE Game Adapter by
# Jono99 and Layy Meta by MGC and requires all three scripts in order to function.
#
# It is recommended that you have the scripts inserted in this order:
# Gamepad Extender, GE Game Adapter, Layy Meta then GEGA - Layy (this script)
#
# Link to download Gamepad Extender: http://forums.rpgmakerweb.com/index.php?/topic/1284-gamepad-extender-v11-2202015/
# Link to download GE Game Adapter: http://forums.rpgmakerweb.com/index.php?/topic/69589-ge-game-adapter/
# Link to download Layy Meta: http://www.rgss-factory.net/2013/07/27/ace-layy-meta-engine-editor-3d-isometric-maps/
#==============================================================================






#==============================================================================
# DO NOT EDIT UNLESS YOU KNOW WHAT YOU ARE DOING!
#==============================================================================
if defined?(WolfPad) == nil
  msgbox("WARNING: Gamepad Extender is either missing or executes sometime after this. To avoid issues, GEGA - Layy will not execute!")
elsif defined?(GEGAOptions) == nil
  msgbox("WARNING: GE Game Adapter is either missing or executes sometime after this. To avoid issues, GEGA - Layy will not execute!")
elsif defined?(Layy_Meta) == nil
  msgbox("WARNING: Layy Meta is either missing or executes sometime after this. To avoid issues, GEGA - Layy will not execute!")
else
  module Layy_Meta
    #--------------------------------------------------------------------------
    # * Frame Update
    #--------------------------------------------------------------------------
    def self.update_input
      if Input.trigger?(PadConfig.page_up)
        rotate_by(90, 15)
      elsif Input.trigger?(PadConfig.page_down)
        rotate_by(-90, 15)
      end
    end
  end
end

For the record, Mode7 itself doesn't require any sort of extension to work with GE Game Adapter. If you're just using Mode7 on its own without the Rotation Airship, you don't need this GEGA Extension.
Code:
#==============================================================================
# GEGA - Mode 7 Rotation Airship
# by Jono99
#------------------------------------------------------------------------------
# This allows the map rotation to work when using GE Game Adapter by Jono99 and
# the Rotation Airship extention for Mode 7 by MGC.
#
# This script is based off of Gamepad Extender by Lone Wolf, GE Game Adapter by
# Jono99, Mode 7 by MGC and Mode 7 addon Rotation Airship by MGC and requires
# all three scripts in order to function.
#
# It is recommended that you have the scripts inserted in this order:
# Gamepad Extender, GE Game Adapter, Mode 7 and its addons,
# then GEGA - Mode 7 Rot Air (this script)
#
# Link to download Gamepad Extender: http://forums.rpgmakerweb.com/index.php?/topic/1284-gamepad-extender-v11-2202015/
# Link to download GE Game Adapter: http://forums.rpgmakerweb.com/index.php?/topic/69589-ge-game-adapter/
# Link to download Mode 7 (addons included): http://www.rgss-factory.net/2012/12/10/ace-mode-7-ace-v-1-3-addon-map-rotation-airship/
#==============================================================================






#==============================================================================
# DO NOT EDIT UNLESS YOU KNOW WHAT YOU ARE DOING!
#==============================================================================
class Game_Player
  attr_reader :already_aliased_mgc_m7a_addon_airship_rotation
end
if defined?(WolfPad) == nil
  msgbox("WARNING: Gamepad Extender is either missing or executes sometime after this. To avoid issues, GEGA - Mode 7 Rot Air will not execute!")
elsif defined?(GEGAOptions) == nil
  msgbox("WARNING: GE Game Adapter is either missing or executes sometime after this. To avoid issues, GEGA - Mode 7 Rot Air will not execute!")
else
  class Game_Player
    #--------------------------------------------------------------------------
    # * Processing of Movement via Input from Directional Buttons
    #--------------------------------------------------------------------------
    def move_by_input
      unless MGC.mode7_active && in_airship?
        move_by_input_mgc_m7a_addon_airship_rotation
        return
      end
      @moving = false
      return if !movable? || $game_map.interpreter.running? || MGC.effect?
      @direction = 8
      if WolfPad.plugged_in?
        gega_mode_7_rot_air_move_by_input_input(:UP, :DOWN, :LEFT, :RIGHT) if GEGAOptions::MoveInput == 0 || GEGAOptions::MoveInput == 2
        gega_mode_7_rot_air_move_by_input_input(:L_UP, :L_DOWN, :L_LEFT, :L_RIGHT) if GEGAOptions::MoveInput > 0
      else
        gega_mode_7_rot_air_move_by_input_input(:UP, :DOWN, :LEFT, :RIGHT)
      end
    end
    def gega_mode_7_rot_air_move_by_input_input(up, down, left, right)
      if Input.press?(left)
        rotate_left
      elsif Input.press?(right)
        rotate_right
      end
      if Input.press?(up)
        move_forward_m7a
      elsif Input.press?(down)
        move_back_m7a
      end
    end
  end
end
 
Last edited:

Jono99

Veteran
Veteran
Joined
May 8, 2015
Messages
76
Reaction score
17
First Language
English
Primarily Uses
RMVXA
Version 1.0.1 is now up! Credit to Golden Unicorn Gaming for pointing out the bug to me.
 

Jono99

Veteran
Veteran
Joined
May 8, 2015
Messages
76
Reaction score
17
First Language
English
Primarily Uses
RMVXA
Version 1.0.2 is now up! Those who were intending to have StartForPause set to true (which is the default setting) don't need to get this, but you can still if you want.
 

Reapergurl

Drummer Extraordinaire! xD
Veteran
Joined
Dec 15, 2016
Messages
534
Reaction score
552
First Language
British English
Primarily Uses
Other
Right away, I saw a syntax problem with v 1.02.


I corrected this. Corrections are in ().

#==============================================================================
# Gamepad Extender Game Adapter
# by Jono99
#------------------------------------------------------------------------------
# This allows the game commands to be handled in a way more friendly to controller
# input. Based off Gamepad Extender by Lone Wolf and requires Gamepad Extender
# in order to function.
# Link to download Gamepad Extender: http://forums.rpgmakerweb.com/index.php?/topic/1284-gamepad-extender-v11-2202015/
#------------------------------------------------------------------------------
# Changelog
# 1.0.0: Initial release
# 1.0.1: Fixed bug where the save menu would not accept input from the analogue stick
# and the dpad's input would be duplicated (only occured when MenuInput was set to 2)


# 1.0.2: Removed checks to see if values in GEGAOptions are acceptable values (they caused a problem where the script would not run in StartForPause was set to false)
#==============================================================================
module GEGAOptions
  # Use the Start button instead of the B button to pause the game
  StartForPause = true
  
  # Determine what input device is used for the menus.
  # 0 for just the dpad
  # 1 for just the left analogue stick
  # 2 for both
  MenuInput = 2
  
  # Determine what input device is used for moving around the map.
  # 0 for just the dpad
  # 1 for just the left analogue stick
  # 2 for both
  MoveInput = 2
end



#==============================================================================
# DO NOT EDIT UNLESS YOU KNOW WHAT YOU ARE DOING!
#==============================================================================
if defined?(WolfPad) == nil
  msgbox("WARNING: GamePad Extender is either missing or executes sometime after this. To avoid issues, GE Game Adapter will not execute!")
else
  module WolfPad
    def self.dird4(p_i = 0)
      if press?:)UP, p_i)
       8
      elsif press?:)RIGHT, p_i)
       6
      elsif press?:)LEFT, p_i)
       4
      elsif press?:)DOWN, p_i)
       2
      else
       0
      end
    end
    def self.dird8(p_i = 0)
      if press?:)UP, p_i) and press?:)LEFT, p_i)
       7
      elsif press?:)UP, p_i) and press?:)RIGHT, p_i)
       9
      elsif press?:)DOWN, p_i) and press?:)LEFT, p_i)
       1
      elsif press?:)DOWN, p_i) and press?:)RIGHT, p_i)
       3
     else
       dird4(p_i)
      end
    end
  end
  class Game_Player
    #--------------------------------------------------------------------------
    # * Determine if Dashing
    #--------------------------------------------------------------------------
    def dash?
      return false if @move_route_forcing
      return false if $game_map.disable_dash?
      return false if vehicle
      return Input.press?(PadConfig.dash)
    end
    #--------------------------------------------------------------------------
    # * Processing of Movement via Input from Directional Buttons
    #--------------------------------------------------------------------------
    def move_by_input
      return if !movable? || $game_map.interpreter.running?
      if WolfPad.plugged_in? == false
        gega_move_by_input_input(Input.dir4)
      else
        gega_move_by_input_input(WolfPad.dird4) if GEGAOptions::MoveInput == 0 || GEGAOptions::MoveInput == 2
        gega_move_by_input_input(WolfPad.lstick4) if GEGAOptions::MoveInput > 0
      end
    end
    def gega_move_by_input_input(dir4)
      move_straight(dir4) if dir4 > 0
    end
    #--------------------------------------------------------------------------
    # * Processing When Not Moving
    #     last_moving : Was it moving previously?
    #--------------------------------------------------------------------------
    def update_nonmoving(last_moving)
      return if $game_map.interpreter.running?
      if last_moving
        $game_party.on_player_walk
        return if check_touch_event
      end
      if movable? && Input.trigger?(PadConfig.confirm)
        return if get_on_off_vehicle
        return if check_action_event
      end
      update_encounter if last_moving
    end
  end
  class Window_Selectable
    #--------------------------------------------------------------------------
    # * Cursor Movement Processing
    #--------------------------------------------------------------------------
    def process_cursor_move
      return unless cursor_movable?
      last_index = @index
      if WolfPad.plugged_in?
        gega_process_cursor_move_input:)UP, :DOWN, :LEFT, :RIGHT) if GEGAOptions::MenuInput == 0 || GEGAOptions::MenuInput == 2
        gega_process_cursor_move_input:)L_UP, :L_DOWN, :L_LEFT, :L_RIGHT) if GEGAOptions::MenuInput > 0
      else
        gega_process_cursor_move_input:)UP, :DOWN, :LEFT, :RIGHT)
      end
      cursor_pagedown   if !handle?:)pagedown) && Input.trigger?(PadConfig.page_down)
      cursor_pageup     if !handle?:)pageup)   && Input.trigger?(PadConfig.page_up)
      Sound.play_cursor if @index != last_index
    end
    def gega_process_cursor_move_input(up, down, left, right)
      cursor_down (Input.trigger?(down)) if Input.repeat?(down)
      cursor_up   (Input.trigger?(up))    if Input.repeat?(up)
      cursor_right(Input.trigger?(right)) if Input.repeat?(right)
      cursor_left (Input.trigger?(left))  if Input.repeat?(left)
    end
    #--------------------------------------------------------------------------
    # * Handling Processing for OK and Cancel Etc.
    #--------------------------------------------------------------------------
    def process_handling
      return unless open? && active
      return process_ok       if ok_enabled?        && Input.trigger?(PadConfig.confirm)
      return process_cancel   if cancel_enabled?    && Input.trigger?(PadConfig.cancel)
      return process_pagedown if handle?:)pagedown) && Input.trigger?(PadConfig.page_down)
      return process_pageup   if handle?:)pageup)   && Input.trigger?(PadConfig.page_up)
    end
  end
  class Window_ShopNumber
    #--------------------------------------------------------------------------
    # * Update Quantity
    #--------------------------------------------------------------------------
    def update_number
      if WolfPad.plugged_in?
        gega_update_number_input:)RIGHT, :LEFT, :UP, :DOWN) if GEGAOptions::MenuInput == 0 || GEGAOptions::MenuInput == 2
        gega_update_number_input:)L_RIGHT, :L_LEFT, :L_UP, :L_DOWN) if GEGAOptions::MenuInput > 0
      else
        gega_update_number_input:)RIGHT, :LEFT, :UP, :DOWN)
      end
    end
  end
  def gega_update_number_input(right, left, up, down)
    change_number(1)   if Input.repeat?(right)
    change_number(-1)  if Input.repeat?(left)
    change_number(10)  if Input.repeat?(up)
    change_number(-10) if Input.repeat?(down)
  end
  class Window_NameInput
    #--------------------------------------------------------------------------
    # * Handling Processing for OK and Cancel Etc.
    #--------------------------------------------------------------------------
    def process_handling
      return unless open? && active
      process_jump if Input.trigger?:)A) && WolfPad.plugged_in? == false
      process_back if Input.repeat?(PadConfig.cancel)
      process_ok   if Input.trigger?(PadConfig.confirm)
    end
  end
  class Window_NumberInput
    #--------------------------------------------------------------------------
    # * Cursor Movement Processing
    #--------------------------------------------------------------------------
    def process_cursor_move
      return unless active
      last_index = @index
      if WolfPad.plugged_in?
        gega_process_cursor_move_input:)LEFT, :RIGHT) if GEGAOptions::MenuInput == 0 || GEGAOptions::MenuInput == 2
        gega_process_cursor_move_input:)L_LEFT, :L_RIGHT) if GEGAOptions::MenuInput > 0
      else
        gega_process_cursor_move_input:)LEFT, :RIGHT)
      end
      Sound.play_cursor if @index != last_index
    end
    def gega_process_cursor_move_input(left, right)
      cursor_right(Input.trigger?(right)) if Input.repeat?(right)
      cursor_left (Input.trigger?(left))  if Input.repeat?(left)
    end
    #--------------------------------------------------------------------------
    # * Change Processing for Digits
    #--------------------------------------------------------------------------
    def process_digit_change
      return unless active
      if WolfPad.plugged_in?
        gega_process_digit_change_input:)UP, :DOWN) if GEGAOptions::MenuInput == 0 || GEGAOptions::MenuInput == 2
        gega_process_digit_change_input:)L_UP, :L_DOWN) if GEGAOptions::MenuInput > 0
      else
        gega_process_digit_change_input:)UP, :DOWN)
      end
    end
    def gega_process_digit_change_input(up, down)
      if Input.repeat?(up) || Input.repeat?(down)
        Sound.play_cursor
        place = 10 ** (@digits_max - 1 - @index)
        n = @number / place % 10
        @number -= n * place
        n = (n + 1) % 10 if Input.repeat?(up)
        n = (n + 9) % 10 if Input.repeat?(down)
        @number += n * place
        refresh
      end
    end
    #--------------------------------------------------------------------------
    # * Handling Processing for OK and Cancel
    #--------------------------------------------------------------------------
    def process_handling
      return unless active
      return process_ok     if Input.trigger?(PadConfig.confirm)
      return process_cancel if Input.trigger?(PadConfig.cancel)
    end
  end
  class Window_Message
    #--------------------------------------------------------------------------
    # * Update Fast Forward Flag
    #--------------------------------------------------------------------------
    def update_show_fast
      @show_fast = true if Input.trigger?(PadConfig.confirm)
    end
    #--------------------------------------------------------------------------
    # * Input Pause Processing
    #--------------------------------------------------------------------------
    def input_pause
      self.pause = true
      wait(10)
      Fiber.yield until Input.trigger?(PadConfig.cancel) || Input.trigger?(PadConfig.confirm)
      Input.update
      self.pause = false
    end
  end
  class Window_ScrollText
    #--------------------------------------------------------------------------
    # * Determine if Fast Forward
    #--------------------------------------------------------------------------
    def show_fast?
      !$game_message.scroll_no_fast && (Input.press?(PadConfig.dash) || Input.press?(PadConfig.confirm))
    end
  end
  class Scene_Map
    #--------------------------------------------------------------------------
    # * Determine if Menu is Called due to Cancel Button
    #--------------------------------------------------------------------------
    def update_call_menu
      if $game_system.menu_disabled || $game_map.interpreter.running?
        @menu_calling = false
      else
        if WolfPad.plugged_in? && GEGAOptions::StartForPause
          @menu_calling ||= Input.trigger?:)START)
        else
          @menu_calling ||= Input.trigger?:)B)
        end
        call_menu if @menu_calling && !$game_player.moving?
      end
    end
  end
  class Scene_File
    #--------------------------------------------------------------------------
    # * Update Save File Selection
    #--------------------------------------------------------------------------
    def update_savefile_selection
      return on_savefile_ok     if Input.trigger?(PadConfig.confirm)
      return on_savefile_cancel if Input.trigger?(PadConfig.cancel)
      update_cursor
    end
    #--------------------------------------------------------------------------
    # * Update Cursor
    #--------------------------------------------------------------------------
    def update_cursor
      last_index = @index
      if WolfPad.plugged_in?
        gega_update_cursor_input:)UP, :DOWN) if GEGAOptions::MenuInput == 0 || GEGAOptions::MenuInput == 2
        gega_update_cursor_input:)L_UP, :L_DOWN) if GEGAOptions::MenuInput > 0
      else
        gega_update_cursor_input:)UP, :DOWN)
      end
      cursor_pagedown   if Input.trigger?(PadConfig.page_down)
      cursor_pageup     if Input.trigger?(PadConfig.page_up)
      if @index != last_index
        Sound.play_cursor
        @savefile_windows[last_index].selected = false
        @savefile_windows[@index].selected = true
      end
    end
  end
  def gega_update_cursor_input(up, down)
    cursor_down (Input.trigger?(down))  if Input.repeat?(down)
    cursor_up   (Input.trigger?(up))    if Input.repeat?(up)
  end
  class Scene_Gameover
    #--------------------------------------------------------------------------
    # * Frame Update
    #--------------------------------------------------------------------------
    def update
      super
      goto_title if Input.trigger?(PadConfig.confirm)
    end
  end
end



You're welcome. xD


Also, my issue with controls are face button based. Pressing 'A' activates both A and B simultaneously. 


The mapping is odd; Where I normally would have 'C' mapped, 'B' is activated, and where 'B' should be, activates 'C'.


I did not mess with the configuration in x360ce, other than leave the standard mappings as they were, so I don't know what the deal is...


Okay, face buttons on my LDA:


1/0 should be corresponding with Y


2/1 with B


3/2 with A


4/3 with X


5/4 with L1


6/5 with L2


7/6 with R1


8/7 with R2


9/8 with Select


10/9 with Start


11/10 with L3


12/11 with R3


D-Pad, Left Stick Controls work fine.
 
Last edited by a moderator:

Jono99

Veteran
Veteran
Joined
May 8, 2015
Messages
76
Reaction score
17
First Language
English
Primarily Uses
RMVXA
@Reapergurl There are two things that I feel like I need to address.


Firstly: What was the syntax problem? It's worked fine for me (plugging it into new projects).


Secondly: The part mentioning your controller issues is to do with Gamepad Extender, not GE Game Adapter. Besides, @Lone Wolf is going to be much better at helping you than I am (I mentioned him so that he'll hopefully see this). Although, the problem might just be with the configuration. In PadConfig (part of Gamepad Extender), try messing around with the button inputs, mainly switching what's mapped to B and what's mapped to C around (although, in the context of a controller being plugged in, C should not exist).
 

Reapergurl

Drummer Extraordinaire! xD
Veteran
Joined
Dec 15, 2016
Messages
534
Reaction score
552
First Language
British English
Primarily Uses
Other
@Jono99 'C' (keep in mind the quote marks) should be equivalent to A for an Xbox Controller; it was acting as B instead.


I don't know why A/'C' and B were flipped, but...


Actually, the syntax errors occurred because of Notepad's Word Wrap, but even still it looks neater now.... >_>
 

Jono99

Veteran
Veteran
Joined
May 8, 2015
Messages
76
Reaction score
17
First Language
English
Primarily Uses
RMVXA
Actually, the syntax errors occurred because of Notepad's Word Wrap, but even still it looks neater now.... >_>

@Reapergurl I have no idea why I find that funny. But I do. Still no idea as to why things were acting as they were though.
 

Lone Wolf

Tsundere
Veteran
Joined
Mar 13, 2012
Messages
318
Reaction score
81
First Language
English
Primarily Uses
I did not mess with the configuration in x360ce, other than leave the standard mappings as they were, so I don't know what the deal is...

@ReapergurlThe standard mappings on an older Logitech pad don't correspond exactly to an XInput spec controller, for one. Secondly, there is no "C" binding when using my controller module, so that's why it won't behave as intended. Thirdly, PadConfig does nothing unless you alter other scripts to favor its button assignments over whatever they've been hard-coded to.


If you're running into problems because it's not working the way you want it to out of the box, that's because you skipped reading the documentation that explains why it won't do that.
 

Reapergurl

Drummer Extraordinaire! xD
Veteran
Joined
Dec 15, 2016
Messages
534
Reaction score
552
First Language
British English
Primarily Uses
Other
@Lone Wolf Hmmm...


I've read everything. I've done everything necessary.


What I believe the problem may be is conflicting software (I have Logitech Wingman installed and it overrides standard Windows domain controls for my controller).


That may be the issue. Thing is, I can use this to my advantage (and have decided to do so).


I think I'll start a topic in light of this.
 

Reapergurl

Drummer Extraordinaire! xD
Veteran
Joined
Dec 15, 2016
Messages
534
Reaction score
552
First Language
British English
Primarily Uses
Other
@Jono99 I linked you both.


Or well, I mentioned you both.


And have link backs to the scripts as well.... :/
 

Rattata

Villager
Member
Joined
Jan 21, 2021
Messages
6
Reaction score
0
First Language
English
Primarily Uses
RMVXA
Sorry for the bump, but I'm having some trouble with the Arc Engine script in the OP. By default, it makes the "X" button on an Xbox One controller the interact key, and the "A" button the jump button. I need these two reversed, and I was able to make it as such by changing

module GEGAACOptions
def self.jump
WolfPad.plugged_in? ? :A : :X
end
EventInteract = :C
end
module PadConfig
def self.dash
WolfPad.plugged_in? ? :L2 : :A
end
end

and making it:

module GEGAACOptions
def self.jump
WolfPad.plugged_in? ? :X : :X
end
EventInteract = :A
end
module PadConfig
def self.dash
WolfPad.plugged_in? ? :L2 : :A
end
end

And with the controller it works alright, but when using the keyboard it makes the "Shift" key suddenly the action/interact key, which doesn't work for a variety of reasons. My game really needs the X button to be jump and A to be interact on the Xbox Controller/gamepad, but with the controls completely unchanged on keyboard. I've tried messing with the "EventInteract = :A" a bit to get it to work, but I haven't found any fixes. I assume it's reading it as both the A Button and Shift key due to Shift's internal identity in RPG Maker also being :A. I noticed that the "def self.dash" and "def self.jump" both give options for two different inputs based on gamepad and keyboard respectively, anyway to add that for interacting too?
 

Roninator2

Gamer
Veteran
Joined
May 22, 2016
Messages
2,976
Reaction score
664
First Language
English
Primarily Uses
RMVXA
Remember the key mapping.
You changed the shift to be the interact button
Playing a Game
[TABLE]
[TR]
[TH]Name[/TH]
[TH]Game pad[/TH]
[TH]Keyboard[/TH]
[TH]Main function[/TH]
[/TR]
[TR]
[TD]
A​
[/TD]
[TD]Button 1[/TD]
[TD]Shift[/TD]
[TD]Dash[/TD]
[/TR]
[TR]
[TD]
B​
[/TD]
[TD]Button 2[/TD]
[TD]Esc, Num 0, X[/TD]
[TD]Cancel, Menu[/TD]
[/TR]
[TR]
[TD]
C​
[/TD]
[TD]Button 3[/TD]
[TD]Space, Enter, Z[/TD]
[TD]Confirm, OK, Enter[/TD]
[/TR]
[TR]
[TD]
X​
[/TD]
[TD]Button 4[/TD]
[TD]A[/TD]
[TD]-[/TD]
[/TR]
[TR]
[TD]
Y​
[/TD]
[TD]Button 5[/TD]
[TD]S[/TD]
[TD]-[/TD]
[/TR]
[TR]
[TD]
Z​
[/TD]
[TD]Button 6[/TD]
[TD]D[/TD]
[TD]-[/TD]
[/TR]
[TR]
[TD]
L​
[/TD]
[TD]Button 7[/TD]
[TD]Q, Page Up[/TD]
[TD]Previous page[/TD]
[/TR]
[TR]
[TD]
R​
[/TD]
[TD]Button 8[/TD]
[TD]W, Page Down[/TD]
[TD]Next page[/TD]
[/TR]
[/TABLE]
 

Rattata

Villager
Member
Joined
Jan 21, 2021
Messages
6
Reaction score
0
First Language
English
Primarily Uses
RMVXA
Remember the key mapping.
You changed the shift to be the interact button
Playing a Game
[TABLE]
[TR]
[TH]Name[/TH]
[TH]Game pad[/TH]
[TH]Keyboard[/TH]
[TH]Main function[/TH]
[/TR]
[TR]
[TD]
A​
[/TD]

[TD]Button 1[/TD]
[TD]Shift[/TD]
[TD]Dash[/TD]
[/TR]
[TR]
[TD]
B​
[/TD]

[TD]Button 2[/TD]
[TD]Esc, Num 0, X[/TD]
[TD]Cancel, Menu[/TD]
[/TR]
[TR]
[TD]
C​
[/TD]

[TD]Button 3[/TD]
[TD]Space, Enter, Z[/TD]
[TD]Confirm, OK, Enter[/TD]
[/TR]
[TR]
[TD]
X​
[/TD]

[TD]Button 4[/TD]
[TD]A[/TD]
[TD]-[/TD]
[/TR]
[TR]
[TD]
Y​
[/TD]

[TD]Button 5[/TD]
[TD]S[/TD]
[TD]-[/TD]
[/TR]
[TR]
[TD]
Z​
[/TD]

[TD]Button 6[/TD]
[TD]D[/TD]
[TD]-[/TD]
[/TR]
[TR]
[TD]
L​
[/TD]

[TD]Button 7[/TD]
[TD]Q, Page Up[/TD]
[TD]Previous page[/TD]
[/TR]
[TR]
[TD]
R​
[/TD]

[TD]Button 8[/TD]
[TD]W, Page Down[/TD]
[TD]Next page[/TD]
[/TR]
[/TABLE]

I know that much. I probably should have mentioned it in my first post, but I already tried changing it to C which sets it to the normal Z key on the keyboard, but then makes the jump/interact button one and the same (the X Button) on the Xbox One controller. I'm mainly asking for a way to set it as two different inputs between the control schemes as the script allows it for jumping and dashing but not interacting.
 

Roninator2

Gamer
Veteran
Joined
May 22, 2016
Messages
2,976
Reaction score
664
First Language
English
Primarily Uses
RMVXA
a way to set it as two different inputs between the control schemes
Ok, so you want to swap gamepad controller button 3 for button 4?
Maybe change the script to this
Ruby:
module GEGAACOptions
  def self.jump
    WolfPad.plugged_in? ? :A : :X
  end
  EventInteract = WolfPad.plugged_in? ? :X : :C
end
module PadConfig
  def self.dash
    WolfPad.plugged_in? ? :L2 : :A
  end
end
 

Rattata

Villager
Member
Joined
Jan 21, 2021
Messages
6
Reaction score
0
First Language
English
Primarily Uses
RMVXA
Ok, so you want to swap gamepad controller button 3 for button 4?
Maybe change the script to this
Ruby:
module GEGAACOptions
  def self.jump
    WolfPad.plugged_in? ? :A : :X
  end
  EventInteract = WolfPad.plugged_in? ? :X : :C
end
module PadConfig
  def self.dash
    WolfPad.plugged_in? ? :L2 : :A
  end
end

Thank you! This works a bit better than what I had before!
 

Latest Threads

Latest Posts

Latest Profile Posts

Nearing completion of the first major city of Albert, a vacation getaway city built a long time ago by a king who really didn't want to be invaded.
It’s definitely a great day to fit in some time for me to play no mans sky on PS4
Julyon.png

First concept art of one of our main characters love interest who might turn evil depending on her decisions. Or become king of the world. Or marry her. Maybe even everything at once.
Me: *saved the game*
Also me: *exit the game afterward*
The game: "Any unsaved progress will be lost"
Me: "uh,.. alright?"
[I feel a bit sad I did this]
"WhY?...WhY dId YoU KiLl ThEm AlL?...yOu BlOoDy HeLl MoNsTeR...I'LL MAKE YOU PAY!!! FOR THE BLOOD OF THE LOST!!!" ~Scars final words before his final battle [not final boss]

Battle Theme: Blood of the Lost
Face Sprite
Forgotten Eclipse_Scar Dead+Final Battle with him.png

Forum statistics

Threads
110,269
Messages
1,051,835
Members
143,291
Latest member
FoGGick855
Top