🤔 Para Refletir :
"Medo de usar script calls e plugins? Isso existe?"
- Delayzado

Locked Commands Fix

Corvo Masculino

Conde
Membro
Membro
Pax sola in morte.
Juntou-se
18 de Fevereiro de 2017
Postagens
351
Bravecoins
351
[bluealert]Locked Commands Fix[/bluealert]
Introdução
Por padrão, O RM VX Ace apenas escurece as opções bloqueadas, deixando-as inacessíveis. Este código remove estas opções de seus respectivos menus.


Termos de uso
Praticamente nenhum código extra foi acrescentado, então os termos de uso são os mesmos do RPG Maker.


Código:
#===============================================================================
#                        Locked Commands Fix
#===============================================================================
# This code removes locked options from several scenes, showing them normally
# when they are released.
#-------------------------------------------------------------------------------
# Continue, on Title.
class Window_TitleCommand
  alias :add_command_Continue :add_command
  def add_command(*args)
    name, symbol = *args
    return if symbol === :continue && !continue_enabled
    add_command_Continue(*args)
  end
end
#-------------------------------------------------------------------------------
# Sell, on Shop.
class Window_ShopCommand
  alias :add_command_Sell :add_command
  def add_command(*args)
    name, symbol = *args
    return if symbol === :sell && @purchase_only
    add_command_Sell(*args)
  end
end
#-------------------------------------------------------------------------------
# Save and Formation, on Menu.
class Window_MenuCommand
  alias :add_command_Save :add_command
  def add_command (*args)
    name, symbol = *args
    return if symbol === :save && !save_enabled
    add_command_Save(*args)
  end
  alias :add_command_Formation :add_command
  def add_command (*args)
    name, symbol = *args
    return if symbol === :formation && !formation_enabled
    add_command_Formation(*args)
  end
end
#-------------------------------------------------------------------------------
# Escape, on Battle.
class Window_PartyCommand
  alias :add_command_Escape :add_command
  def add_command (*args)
    name, symbol = *args
    return if symbol === :escape && !BattleManager.can_escape?
    add_command_Escape(*args)
  end
end
#-------------------------------------------------------------------------------


Como podem ver, a única alteração do código é colocar os respectivos comandos dentro de condições. Qualquer incompatibilidade (provavelmente) pode ser resolvida da mesma forma.

Bonus

Embora o modo como o script é feito pareça ridículo, o mesmo é bem efetivo. Por que digitar trezentas linhas se você pode simplesmente usar o que já está pronto? Para exemplificar, recriei um sistema do jogo The 7th Saga. Nele, sempre que o jogador morre uma quantia considerável de dinheiro é perdida. Para salvar suas economias, o jogador compra itens que não perdem valor ao serem revendidos (e não desaparecem ao morrer):

Código:
#===============================================================================
#                        Treasure System
#===============================================================================
#  If in your game the player loses money, he may need a way to
#  save his coins. Items with the tag "treasure" in the notes field are not
#  devalued when sold.
#-------------------------------------------------------------------------------
class Scene_Shop  
  def selling_price    
    if @item.note.include?("treasure")
      @item.price
    else
      @item.price / 2
    end    
  end  
end
#===============================================================================

Para que um item não perca seu valor basta incluir "treasure" (sem aspas) na caixa de notas do mesmo. Aí está um sistema inteiro feito em três linhas. Se preferir tudo junto:

Código:
#===============================================================================
#                        Treasure System
#===============================================================================
#  If in your game the player loses money, he may need a way to
#  save his coins. Items with the tag "treasure" in the notes field are not
#  devalued when sold.
#-------------------------------------------------------------------------------
class Scene_Shop  
  def selling_price    
    if @item.note.include?("treasure")
      @item.price
    else
      @item.price / 2
    end    
  end  
end
#===============================================================================
#                        Locked Commands Fix
#===============================================================================
# This code removes locked options from several scenes, showing them normally
# when they are released.
#-------------------------------------------------------------------------------
# Continue, on Title.
class Window_TitleCommand
  alias :add_command_Continue :add_command
  def add_command(*args)
    name, symbol = *args
    return if symbol === :continue && !continue_enabled
    add_command_Continue(*args)
  end
end
#-------------------------------------------------------------------------------
# Sell, on Shop.
class Window_ShopCommand
  alias :add_command_Sell :add_command
  def add_command(*args)
    name, symbol = *args
    return if symbol === :sell && @purchase_only
    add_command_Sell(*args)
  end
end
#-------------------------------------------------------------------------------
# Save and Formation, on Menu.
class Window_MenuCommand
  alias :add_command_Save :add_command
  def add_command (*args)
    name, symbol = *args
    return if symbol === :save && !save_enabled
    add_command_Save(*args)
  end
  alias :add_command_Formation :add_command
  def add_command (*args)
    name, symbol = *args
    return if symbol === :formation && !formation_enabled
    add_command_Formation(*args)
  end
end
#-------------------------------------------------------------------------------
# Escape, on Battle.
class Window_PartyCommand
  alias :add_command_Escape :add_command
  def add_command (*args)
    name, symbol = *args
    return if symbol === :escape && !BattleManager.can_escape?
    add_command_Escape(*args)
  end
end
#-------------------------------------------------------------------------------

[okay]Agradecimentos:
Alisson / MayLeone / SoloLearn / Kyo Panda
Centro RPG Maker[/okay]

 
Voltar
Topo Inferior