- Сообщений: 82
- Спасибо получено: 26
Как менять оружие одним нажатием?
Скрыть
Больше
7 года 3 мес. назад - 7 года 3 мес. назад #108649
от MAHTUKOP
бугагашеньки
MAHTUKOP создал тему: Как менять оружие одним нажатием?
Есть скрипт
Galv’s Quick Weapon Swap V.1.4
позволяющий менять оружие не переходя в меню, нажатием одной кнопки.
Подскажите пожалуйста, как можно сделать что-бы кнопкой "в право" была английская буква "E" на клавиатуре?
Просто замена строчки BTN_RIGHT = :R на BTN_RIGHT = :E не приводит вообще ни к чему.
Подскажите пожалуйста, как можно сделать что-бы кнопкой "в право" была английская буква "E" на клавиатуре?
Просто замена строчки BTN_RIGHT = :R на BTN_RIGHT = :E не приводит вообще ни к чему.
ВНИМАНИЕ: Спойлер!
Code:
#-------------------------------------------------------------------------------
# Galv's Quick Weapon Swap
#-------------------------------------------------------------------------------
# For: RPGMAKER VX ACE
# Version 1.4
# Requested by mary674
#------------------------------------------------------------------------------#
# 2013-04-10 - Version 1.4 - made compatible with explorer's hud script
# - (make sure this is below it in the script list)
# 2013-02-25 - Version 1.3 - fixed menu crash
# 2013-02-25 - Version 1.2 - compatability with my pop up script
# 2013-02-25 - Version 1.1 - save bug error fixed
# 2013-02-24 - Version 1.0 - release
#------------------------------------------------------------------------------#
# Changes the party leader's weapons (or equipment) by pressing a button on the
# map (default keyboard Q and W (L and R)). It cycles through all weapons the
# actor can equip and pops up text with which weapon was equipped.
#------------------------------------------------------------------------------#
($imported ||= {})["Galv_Quick_Weapon_Swap"] = true
module Galv_Qswap
#------------------------------------------------------------------------------#
# SETUP OPTIONS
#------------------------------------------------------------------------------#
BTN_LEFT = :L # Buttons to cycle equipment (:L and :R are Q and W keys)
BTN_RIGHT = :R
DISABLE_SWITCH = 1 # Turn swith ON to disable this.
EQUIP_NONE = true # true - can equip nothing. false - cannot equip nothing
NO_EQUIP_TXT = "Nothing Equipped" # Text displayed if you equip nothing
EQUIP_TXT = " Equipped" # Text displayed after weapon name
SE = ["Equip1",100,100] # "SE_Name",volume,pitch when swapping
Y_OFFSET = -50 # Y offset for popup text
DRAW_ICON = true # Draws icon with equipped weapon
#------------------------------------------------------------------------------#
# END SETUP OPTIONS
#------------------------------------------------------------------------------#
end
class Game_Player < Game_Character
alias galv_quick_weapon_gp_update update
def update
quick_change_equip if !$game_map.interpreter.running?
update_popup if @popsprite
galv_quick_weapon_gp_update
end
def quick_change_equip
return if $game_switches[Galv_Qswap::DISABLE_SWITCH]
if Input.trigger?(Galv_Qswap::BTN_LEFT)
weapon_list = get_equip_array
e_id = !actor.equips[0].nil? ? actor.equips[0].id : 0
eq_list = weapon_list.select { |w| w.id < e_id }
if eq_list.empty? && e_id != 0 && Galv_Qswap::EQUIP_NONE
do_quick_equip(nil)
elsif eq_list.empty?
do_quick_equip(weapon_list.reverse[0])
else
do_quick_equip(eq_list.reverse[0])
end
elsif Input.trigger?(Galv_Qswap::BTN_RIGHT)
weapon_list = get_equip_array
e_id = !actor.equips[0].nil? ? actor.equips[0].id : 0
eq_list = weapon_list.select { |w| w.id > e_id }
if eq_list.empty? && e_id != 0 && Galv_Qswap::EQUIP_NONE
do_quick_equip(nil)
elsif eq_list.empty?
do_quick_equip(weapon_list[0])
else
do_quick_equip(eq_list[0])
end
end
end
def get_equip_array
@quick_swap = $game_party.all_items.select { |item|
actor.equippable?(item) && item.is_a?(RPG::Weapon) &&
!actors_equip?(item) }
end
def do_quick_equip(item)
actor.change_equip(0, item)
RPG::SE.new(Galv_Qswap::SE[0],Galv_Qswap::SE[1],Galv_Qswap::SE[2]).play
popup(item)
end
def actors_equip?(item)
return nil if actor.equips[0].nil?
actor.equips[0].id == item.id
end
def update_popup
@popsprite.update
end
def dispose_popup
@popsprite.dispose if @popsprite
@popsprite = nil
end
def popup(name)
@popsprite.dispose if @popsprite
@popsprite = Sprite_QPopText.new(@viewport1,$game_player,name)
end
end # Game_Player < Game_Character
class Scene_Map < Scene_Base
alias galv_quick_weapon_sm_dispose_spriteset dispose_spriteset
def dispose_spriteset
galv_quick_weapon_sm_dispose_spriteset
$game_player.dispose_popup
end
end # Scene_Map < Scene_Base
class Sprite_QPopText < Sprite
def initialize(viewport,character,item)
super(viewport)
@character = character
@item = item
@rise = 0
create_bitmap
update
end
def dispose
self.bitmap.dispose
if @icon_sprite
@icon_sprite.bitmap.dispose
@icon_sprite.dispose
end
super
end
def create_bitmap
if @item && Galv_Qswap::DRAW_ICON
@icon_sprite = Sprite.new
@icon_sprite.bitmap = Cache.system("Iconset")
end
self.bitmap = Bitmap.new(200, 20)
self.bitmap.font.size = 20
self.bitmap.font.color.set(255, 255, 255)
self.z = 2
end
def update
super
update_position
update_bitmap
update_visibility
update_icon if @icon_sprite && Galv_Qswap::DRAW_ICON
end_popup
end
def end_popup
return $game_player.dispose_popup if @rise >= 80
end
def name_text
if @item
return @item.name + Galv_Qswap::EQUIP_TXT
else
return Galv_Qswap::NO_EQUIP_TXT
end
end
def update_bitmap
@rise += 1
self.bitmap.clear
self.bitmap.draw_text(self.bitmap.rect, name_text, 1)
self.draw_icon(@item.icon_index) if @item && Galv_Qswap::DRAW_ICON
end
def draw_icon(icon_index)
rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
@icon_sprite.src_rect = rect
@icon = icon_index
end
def update_position
self.x = @character.screen_x - 100
self.y = @character.screen_y + Galv_Qswap::Y_OFFSET - @rise * 0.5
end
def update_icon
@icon_sprite.x = @character.screen_x - name_text.length * 4 - 26
@icon_sprite.y = self.y - 2
@icon_sprite.opacity = self.opacity
end
def update_visibility
self.opacity = 390 - @rise * 7
end
end # Sprite_PopText < Sprite
if $imported["Galv_Explorers_Hud"]
class Scene_Map < Scene_Base
attr_accessor :galv_hud
end
class Game_Player < Game_Character
alias galv_quick_weapon_gp_hud_patch_quick_change_equip quick_change_equip
def quick_change_equip
galv_quick_weapon_gp_hud_patch_quick_change_equip
SceneManager.scene.galv_hud.refresh_windows
end
end
end
бугагашеньки
Последнее редактирование: 7 года 3 мес. назад пользователем MAHTUKOP.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
7 года 3 мес. назад - 7 года 3 мес. назад #108657
от Dmy
Dmy ответил в теме Как менять оружие одним нажатием?
RPG Maker VX Ace (да и другие версии) ориентированы на ввод с геймпада, поэтому у них поддерживается не вся клавиатура. Всего доступны только несколько кнопок, а их соответствие кнопкам с клавиатуры можно менять через F1.
Доступны такие кнопки, значения которых можно поменять через F1:
:A (Shift), :B (Escape, 0 на цифровой клавиатуре, X), :C (пробел, Enter, Z), :X (клавиша A), :Y (клавиша S), :Z (клавиша D), :L (клавиша Q), :R (клавиша W).
Кроме того, есть такие кнопки, значение которых нельзя поменять:
:DOWN (стрелка вниз, 2 на цифровой клавиатуре), :LEFT (стрелка влево, 3 на цифровой клавиатуре), :RIGHT (стрелка вправо, 6 на цифровой клавиатуре), :UP (стрелка вверх, 8 на цифровой клавиатуре).
И ещё есть системные коды для таких кнопок, но я не уверен, что они сработают:
:SHIFT, :CTRL, :ALT, :F5, :F6, :F7, :F8, :F9.
Нормального способа использовать другие клавиши нет. Можно попробовать использовать скрипт Full Input Keyboard от Cidiomar'а, но он создаёт проблемы при управлении с геймпада.
Доступны такие кнопки, значения которых можно поменять через F1:
:A (Shift), :B (Escape, 0 на цифровой клавиатуре, X), :C (пробел, Enter, Z), :X (клавиша A), :Y (клавиша S), :Z (клавиша D), :L (клавиша Q), :R (клавиша W).
Кроме того, есть такие кнопки, значение которых нельзя поменять:
:DOWN (стрелка вниз, 2 на цифровой клавиатуре), :LEFT (стрелка влево, 3 на цифровой клавиатуре), :RIGHT (стрелка вправо, 6 на цифровой клавиатуре), :UP (стрелка вверх, 8 на цифровой клавиатуре).
И ещё есть системные коды для таких кнопок, но я не уверен, что они сработают:
:SHIFT, :CTRL, :ALT, :F5, :F6, :F7, :F8, :F9.
Нормального способа использовать другие клавиши нет. Можно попробовать использовать скрипт Full Input Keyboard от Cidiomar'а, но он создаёт проблемы при управлении с геймпада.
Последнее редактирование: 7 года 3 мес. назад пользователем Dmy.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Время создания страницы: 0.093 секунд
