Registre-se gratuitamente e tenha o mundo do RPG na sua mão!
 
PortalInícioCalendárioGaleriaFAQBuscarRegistrar-seGruposConectar-se

Compartilhe | 
 

 [RGSS2]Evolução de Parâmetros

Ver o tópico anterior Ver o tópico seguinte Ir em baixo 
AutorMensagem
Sorcer Loko
Cientista
Cientista


Número de Mensagens : 51
Data de inscrição : 01/02/2008

Estatísticas
Alertas Alertas:
0/5  (0/5)
Pontos Pontos: 10 / RST: 360 XD!!
Minhas Moedas! Minhas Moedas!: 210

MensagemAssunto: [RGSS2]Evolução de Parâmetros   Qua 2 Abr - 20:32:29

Descrição:O script faz evoluir os parâmetros HP máximo, MP máximo, força, destreza, agilidade e magia, e não precisa de configuração, basta colar acima do Main.
______________________________________________
Feio por: João B

Código:
#==================================================================
# Evolução de parâmetros
#------------------------------------------------------------------
# Este script evolui os parâmetros de um jogador.
# Ele envolve as classes:
#  -Scene_Battle
#  -Scene_Map
#  -Window_ParameterUp
#  -Game_Actor
#==================================================================

class Scene_Battle
  def update_phase1
    # Aqui é determinado se houve vitória ou derrota
    if judge
      # Se houver vitória ou derrota: fim do método
      return
    end
    @initial_hp = []
    @initial_sp = []
    @initial_str = []
    @initial_dex = []
    @initial_agi = []
    @initial_int = []
    for actor in $game_party.actors
      @initial_hp.push(actor.hp)
      @initial_sp.push(actor.sp)
      @initial_str.push(actor.str)
      @initial_dex.push(actor.dex)
      @initial_agi.push(actor.agi)
      @initial_int.push(actor.int)
    end
    # Iniciar fase de comandos do Grupo de Heróis
    start_phase2
  end
 
  def calculate_evolution(result)
    for i in 0...$game_party.actors.size
      actor = $game_party.actors[i]
      if actor.hp < @initial_hp[i] and
        @initial_hp[i] - actor.hp > actor.maxhp * 15 / 100 and rand(10) == 0
        actor.hp_up = true
        actor.maxhp += 50
      end
      if actor.sp < @initial_sp[i] and
        @initial_sp[i] - actor.sp > actor.maxsp * 15 / 100 and rand(10) == 0
        actor.sp_up = true
        actor.maxsp += 50
      end
      if result == 0 and rand(10) == 0
        actor.str_up = true
        actor.str += 5
      end
      if actor.hp > @initial_hp[i] and
        actor.hp - @initial_hp[i] > actor.maxhp * 4 / 10 and rand(10) == 0
        actor.dex_up = true
        actor.dex += 5
      end
      if result == 2 and rand(10) == 0
        actor.agi_up = true
        actor.agi += 5
      end
      if actor.sp > @initial_sp[i] and
        actor.sp - @initial_sp[i] > actor.maxsp * 4 / 10 and rand(10) == 0
        actor.int_up = true
        actor.int += 5
      end
    end
  end
 
  def battle_end(result)
    # Limpar flag de Batalha
    $game_temp.in_battle = false
    # Limpar flags de todas as ações dos Heróis
    $game_party.clear_actions
    # Remover os Status de Batalha
    for actor in $game_party.actors
      actor.remove_states_battle
    end
    # Limpar Inimigos
    $game_troop.enemies.clear
    # Chamar Batalha ativa
    if $game_temp.battle_proc != nil
      $game_temp.battle_proc.call(result)
      $game_temp.battle_proc = nil
    end
    calculate_evolution(result)
    # Alternar para a tela de Mapa
    $scene = Scene_Map.new
  end
end

class Scene_Map
  def main
    # Criar o Spriteset
    @spriteset = Spriteset_Map.new
    # Criar as janelas de mensagem
    @window = Window_Message.new
    # Criar as janelas de Evolução de parâmetros
    @evolution_windows = []
    for i in 0...$game_party.actors.size
      actor = $game_party.actors[i]
      parameters = []
      if actor.hp_up
        parameters.push("PV Max")
      end
      if actor.sp_up
        parameters.push("PM Max")
      end
      if actor.str_up
        parameters.push("Força")
      end
      if actor.dex_up
        parameters.push("Destreza")
      end
      if actor.agi_up
        parameters.push("Agilidade")
      end
      if actor.int_up
        parameters.push("Intelecto")
      end
      if parameters.size != 0
        @evolution_windows.push(Window_ParameterUp.new(actor.name, i, parameters))
      end
    end
    if @evolution_windows.size != 0
      @wait_count = 120
      Audio.se_play("Audio/SE/056-Right02", 100, 100)
    else
      @wait_count = -1
    end
    # Definir batalha como ativada
    $game_system.encounter_disabled = false
    # Fazer transições
    Graphics.transition
    # Loop principal
    loop do
      # Atualizar tela de jogo
      Graphics.update
      # Atualizar a entrada de informações
      Input.update
      # Atualizar Frame
      update
      # Abortar loop se a tela foi alterada
      if $scene != self
        break
      end
    end
    # Preparar para transição
    Graphics.freeze
    # Exibição do Spriteset
    @spriteset.dispose
    # Exibição da janela de mensagem
    @message_window.dispose
    for i in @evolution_windows
      if i != nil
        i.dispose
      end
    end
    # Se estiver alternando para a tela de Título
    if $scene.is_a?(Scene_Title)
      # Desmaecer tela
      Graphics.transition
      Graphics.freeze
    end
  end
 
  def update
    # Loop
    loop do
      # Atualizar Mapa, Interpretador e Jogador
      # (Esta ordenação de atualização é importante para quando as condições
      # estiverem cheias para executar qualquer evento e o jogador não tem a
      # oportunidade de se mover em algum instante)
      $game_map.update
      $game_system.map_interpreter.update
      $game_player.update
      # Atualizar tela de sistema
      $game_system.update
      $game_screen.update
      # Abortar o loop se o jogador não estiver se movendo
      unless $game_temp.player_transferring
        break
      end
      # Executar movimento
      transfer_player
      # Abortar loop se estiver ocorrendo um transição
      if $game_temp.transition_processing
        break
      end
    end
    # Atualizar Spriteset
    @spriteset.update
    # Atualizar janela de mensagens
    @message_window = Window_Message.new
    # Se chegar a 0
    if @wait_count == 0
      for i in @evolution_windows
        i.dispose
        i = nil
      end
      @wait_count = -1
      for actor in $game_party.actors
        actor.hp_up = false
        actor.sp_up = false
        actor.str_up = false
        actor.dex_up = false
        actor.agi_up = false
        actor.int_up = false
      end
    else
      # Diminuir a espera
      @wait_count = [@wait_count - 1, -1].max
    end
    # Se ocorrer um Game Over
    if $game_temp.gameover
      # Alternar para a tela de Game Over
      $scene = Scene_Gameover.new
      return
    end
    # Se estiver retornando à tela de Título
    if $game_temp.to_title
      # Alternar para a tela de Título
      $scene = Scene_Title.new
      return
    end
    # Abortar loop se estiver ocorrendo um transição
    if $game_temp.transition_processing
      # Limpar flag de transição
      $game_temp.transition_processing = false
      # Executar transição
      if $game_temp.transition_name == ""
        Graphics.transition(20)
      else
        Graphics.transition(40, "Graphics/Transitions/" +
          $game_temp.transition_name)
      end
    end
    # Se estiver exibindo uma mensagem
    if $game_temp.message_window_showing
      return
    end
    # Se a lista de encontros não estiver vazia, e o contador de encontro for 0
    if $game_player.encounter_count == 0 and $game_map.encounter_list != []
      # Se estiver ocorrendo um evento ou o encontro não for proibido
      unless $game_system.map_interpreter.running? or
            $game_system.encounter_disabled
        # Confirmar loop
        n = rand($game_map.encounter_list.size)
        troop_id = $game_map.encounter_list[n]
        # Se o Grupo de Inimigos não for inválido
        if $data_troops[troop_id] != nil
          # Definir flag de chamada de batalha
          $game_temp.battle_calling = true
          $game_temp.battle_troop_id = troop_id
          $game_temp.battle_can_escape = true
          $game_temp.battle_can_lose = false
          $game_temp.battle_proc = nil
        end
      end
    end
    # Se o boão B for pressionado
    if Input.trigger?(Input::B)
      # Se estiver ocorrendo um evento ou o menu não for proibido
      unless $game_system.map_interpreter.running? or
            $game_system.menu_disabled
        # Definir flag de chamda de Menu ou de Beep
        $game_temp.menu_calling = true
        $game_temp.menu_beep = true
      end
    end
    # Se o Modo de Depuração estiver ativo e a tecla F9 for pressionado
    if $debug and Input.press?(Input::F9)
      # Definir flag de chamda de depuração
      $game_temp.debug_calling = true
    end
    # Se o jogador não estiver se movendo
    unless $game_player.moving?
      # Executar a chamada de cada tela
      if $game_temp.battle_calling
        call_battle
      elsif $game_temp.shop_calling
        call_shop
      elsif $game_temp.name_calling
        call_name
      elsif $game_temp.menu_calling
        call_menu
      elsif $game_temp.save_calling
        call_save
      elsif $game_temp.debug_calling
        call_debug
      end
    end
  end
end

class Window_ParameterUp < Window_Base 
  def initialize(actor_name, column, parameters)
    super(column * 160, 0, 160, parameters.size * 32 + 64)
    self.contents = Bitmap.new(self.width - 32, parameters * 32 + 32)
    self.contents.font.name = $defaultfonttype
    self.contents.font.size = $defaultfontsize
    @actor_name = actor_name
    @parameters = parameters
    refresh
  end
 
  def refresh
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(4, 0, 128, 32, @actor_name, 1)
    self.contents.font.color = normal_color
    for i in 0...@parameters.size
      self.contents.draw_text(4, i * 32 + 32, 128, 32, @parameters[i])
      bitmap = RPG::Cache.icon(item.icon_name)
      self.contents.blt(i * 32 + 32, 104, bitmap, Rect.new(0, 0, 24, 24))
    end
  end
end

class Game_Actor < Game_Battler
  attr_accessor :hp_up                    # Evolução no HP
  attr_accessor :sp_up                    # Evolução no MP
  attr_accessor :str_up                  # Evolução na Força
  attr_accessor :dex_up                  # Evolução na Destreza
  attr_accessor :agi_up                  # Evolução na Agilidade
  attr_accessor :int_up                  # Evolução na Magia
 
  def initialize(actor_id)
    super()
    @hp_up  = false
    @sp_up  = false
    @str_up = false
    @dex_up = false
    @agi_up = false
    @int_up = false
    setup(actor_id)
  end
end
Voltar ao Topo Ir em baixo
Ver perfil do usuário
 
[RGSS2]Evolução de Parâmetros
Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo 
Página 1 de 1
 Tópicos similares
-
» Configurar parâmetros padrões
» Desktop Parâmetros de Configuração ??
» alguem ja fez a av1 de libras
» [Resolvido]Erro: 3061 Parâmetros Insuficientes. Eram esperados 1
» [Resolvido]Parâmetros Consulta - Gerar Relatório.

Permissão deste fórum:Você não pode responder aos tópicos neste fórum
King RPG :: RPG Maker VX :: Scripts (RGSS2)-
Ir para: