累计送礼: 0 个 累计收礼: 1 个 TA的每日心情 开心 2026-7-12 04:10
签到天数: 209 天
连续签到: 2 天
[LV.7]常住居民III
管理员
VIP
7
卡币
58883
OK点
16
推广点
0
同能卷
50
积分 68848
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
Spoiler: 1.1
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 复制代码
Spoiler: 1.2
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.
Spoiler: Sapphire Action System IV - Khas
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 复制代码
Spoiler: Khas Pixel Movement - Khas
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 复制代码
Spoiler: Arc Engine - Khas
Spoiler: FPLE - MGC
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 复制代码
Spoiler: ISO - MGC
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 复制代码
Spoiler: Layy meta - MGC
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 复制代码
Spoiler: Mode7 Rotation Airship - MGC
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 复制代码
本贴来自国际rpgmaker官方论坛作者:Jono99处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:
https://forums.rpgmakerweb.com/threads/ge-game-adapter.69589/