- 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
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.
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:
