BugFix (para VXACE SP1) Hitskin_logo Hitskin.com

Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o temaVoltar para a ficha do tema

Aldeia RPG
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

BugFix (para VXACE SP1)

Ir para baixo

BugFix (para VXACE SP1) Empty BugFix (para VXACE SP1)

Mensagem por Komuro Takashi Seg Jun 18, 2012 11:42 am

Introdução

É gente, acho que vocês já puderam observar que até mesmo o novo RPG Maker VX Ace, apesar de terem corrigidos muitos dos bugs do VX "clássico". O Yanfly, scripter -- já conhecido por muitos --, como é de praxe, fez um script-base para a engine que está desenvolvendo, esse script-base geralmente contém as correções de erro, customizações mais básicas da engine, e suporte para os outros scripts.
Mas como já vi acontecer por aqui, nem todas as customizações agradam a todos os usuários, já que nem todo mundo vai usar a engine dele. Por isso decidi tirar todas as customizações e código "inútil", isolando apenas as correções de erro e funções mais básicas. No fim das contas, após enxugar tudo cheguei a essas 5 correções básicas.
Scripts de Correção de Erros:Sobreposição da Animação
É o mesmo erro do VX. Quando uma animação de tela inteira é reproduzida contra um grupo de inimigos, o bitmap da animação é na verdade reproduzido várias vezes, causando uma extrema sobreposição quando há muitos inimigos na tela. Essa correção fará com que a animação se reproduza apenas uma vez.Correção da Ordem do Turno da Batalha
Mesmo erro do VX. Para aqueles que usam o sistema de batalha padrão, uma vez que um turno começou, a ordem de ação se configura e é inalterada durante o restante do turno. Quaisquer alterações na AGI do combatente não serão feitas, mesmo que o combatente receba um acréscimo ou decréscimo na AGI. Essa correção faz com que a AGI seja atualizada corretamente a cada ação.Correção da Sobreposição dos Medidores
Mesmo erro do VX. Quando algumas variáveis excedem determinados valores, os medidores podem extrapolar a largura para a qual eles foram originalmente projetados. Essa correção irá evitar que os medidores passem da largura máxima. (Nota: E ainda coloca uma borda em volta deles!)Rolagem do Menu Segurando L e R
Antes, no VX, você podia navegar através de menus rapidamente pressionando os botões L e R (Q e W no teclado). Essa correção recupera a capacidade de percorrer os menus dessa forma.Rolagem no Mapa, Se Menor que a Tela
Uma pequena correção que permita que mapas menores que a tela (17x13, na resolução padrão) apresentem erros na hora do movimento da tela , o "scroll". É útil principalmente para quem utiliza a resolução de 640x480, e faz mapas do tamanho mínimo que o editor permite.

Código:


#==============================================================================
# PACOTE DE CORREÇÕES PARA RMVXACE DO YANFLY:
# Pacote com algumas correções básicas para RMVXAce, tirando as modificações e
# possibilidades de customização do script original. Essencial para corrigir
# vários bugs do jogo já presentes na engine padrão do RGSS3;
# Baseado no "Yanfly Engine Ace - Ace Core Engine v1.00 Versão Traduzida".
#
# Todos os créditos vão para:
# - Yanfly (http://yanflychannel.wordpress.com/)
# Tradução do cabeçalho para Português por:
# - Tradutor (http://makercafe.blogspot.com/)
# Edições e adaptações por:
# - Rafael_Sol_Maker (http://www.condadobraveheart.com/)
#
#==============================================================================


#==============================================================================
# INSTRUÇÕES:
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Para instalar este script, abra seu editor de scripts copie e cole este script
# em um slot aberto abaixo de "Scripts Adicionais", mas acima de Main. Lembre-se
# de salvar.
#
#==============================================================================
# COMPATIBILIDADE:
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Este script é feito estritamente para o RPG Maker VX Ace. É improvável que
# seja executado com o RPG Maker VX sem que precise de ajustes.
#
#==============================================================================


#==============================================================================
# CONTEÚDOS DO SCRIPT:
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Correção de Erro: Sobreposição da Animação
# -----------------------------------------------------------------------------
# - É o mesmo erro do VX. Quando uma animação de tela inteira é reproduzida
# contra um grupo de inimigos, o bitmap da animação é na verdade reproduzido
# várias vezes, causando uma extrema sobreposição quando há muitos inimigos na
# tela. Essa correção fará com que a animação se reproduza apenas uma vez.
#
# -----------------------------------------------------------------------------
# Correção de Erro: Correção da Ordem do Turno da Batalha
# -----------------------------------------------------------------------------
# - Mesmo erro do VX. Para aqueles que usam o sistema de batalha padrão, uma vez
# que um turno começou, a ordem de ação se configura e é inalterada durante o
# restante do turno. Quaisquer alterações na AGI do combatente não serão feitas,
# mesmo que o combatente receba um acréscimo ou decréscimo na AGI.
# Essa correção faz com que a AGI seja atualizada corretamente a cada ação.
#
# -----------------------------------------------------------------------------
# Correção de Erro: Correção da Sobreposição dos Medidores
# -----------------------------------------------------------------------------
# - Mesmo erro do VX. Quando algumas variáveis excedem determinados valores, os
# medidores podem extrapolar a largura para a qual eles foram originalmente
# projetados. Essa correção irá evitar que os medidores passem da largura
# máxima. (N.E.: E ainda coloca uma borda em volta deles!)
#
# -----------------------------------------------------------------------------
# Correção de Erro: Rolagem do Menu Segurando L e R
# -----------------------------------------------------------------------------
# - Antes, no VX, você podia navegar através de menus rapidamente pressionando
# os botões L e R (Q e W no teclado). Essa correção recupera a capacidade de
# percorrer os menus dessa forma.
#
# -----------------------------------------------------------------------------
# Correção de Erro: Rolagem no Mapa, Se Menor que a Tela
# -----------------------------------------------------------------------------
# - Uma pequena correção que permita que mapas menores que a tela (17x13, na
# resolução padrão) apresentem erros na hora do movimento da tela , o "scroll".
# É útil principalmente para quem utiliza a resolução de 640x480, e faz mapas
# do tamanho mínimo que o editor permite.
#
#==============================================================================


#==============================================================================
# ¦ BattleManager
#==============================================================================


module BattleManager
 
  #--------------------------------------------------------------------------
  # overwrite method: turn_start
  #--------------------------------------------------------------------------
  def self.turn_start
    @phase = :turn
    clear_actor
    $game_troop.increase_turn
    @performed_battlers = []
    make_action_orders
  end
 
  #--------------------------------------------------------------------------
  # overwrite method: next_subject
  #--------------------------------------------------------------------------
  def self.next_subject
    @performed_battlers = [] if @performed_battlers.nil?
    loop do
      @action_battlers -= @performed_battlers
      battler = @action_battlers.shift
      return nil unless battler
      next unless battler.index && battler.alive?
      return battler
    end
  end
 
end # BattleManager


#==============================================================================
# ¦ Game_Battler
#==============================================================================


class Game_Battler < Game_BattlerBase
 
  #--------------------------------------------------------------------------
  # public instance variables
  #--------------------------------------------------------------------------
  attr_accessor :pseudo_ani_id
 
  #--------------------------------------------------------------------------
  # alias method: clear_sprite_effects
  #--------------------------------------------------------------------------
  alias game_battler_clear_sprite_effects_ace clear_sprite_effects
  def clear_sprite_effects
    game_battler_clear_sprite_effects_ace
    @pseudo_ani_id = 0
  end
 
end # Game_Battler


#==============================================================================
# ¦ Game_Troop
#==============================================================================


class Game_Troop < Game_Unit
 
  #--------------------------------------------------------------------------
  # overwrite method: setup
  #--------------------------------------------------------------------------
  def setup(troop_id)
    clear
    @troop_id = troop_id
    @enemies = []
    troop.members.each do |member|
      next unless $data_enemies[member.enemy_id]
      enemy = Game_Enemy.new(@enemies.size, member.enemy_id)
      enemy.hide if member.hidden
      enemy.screen_x = member.x + (Graphics.width - 544)/2
      enemy.screen_y = member.y + (Graphics.height - 416)
      @enemies.push(enemy)
    end
    init_screen_tone
    make_unique_names
  end
 
end # Game_Troop


#==============================================================================
# ¦ Game_Map
#==============================================================================


class Game_Map
 
  #--------------------------------------------------------------------------
  # overwrite method: scroll_down
  #--------------------------------------------------------------------------
  def scroll_down(distance)
    if loop_vertical?
      @display_y += distance
      @display_y %= @map.height * 256
      @parallax_y += distance
    else
      last_y = @display_y
      dh = Graphics.height > height * 32 ? height : (Graphics.height / 32)
      @display_y = [@display_y + distance, (height - dh) * 256].min
      @parallax_y += @display_y - last_y
    end
  end
 
  #--------------------------------------------------------------------------
  # overwrite method: scroll_right
  #--------------------------------------------------------------------------
  def scroll_right(distance)
    if loop_horizontal?
      @display_x += distance
      @display_x %= @map.width * 256
      @parallax_x += distance
    else
      last_x = @display_x
      dw = Graphics.width > width * 32 ? width : (Graphics.width / 32)
      @display_x = [@display_x + distance, (width - dw) * 256].min
      @parallax_x += @display_x - last_x
    end
  end
 
end # Game_Map


#==============================================================================
# ¦ Game_Event
#==============================================================================


class Game_Event < Game_Character
 
  #--------------------------------------------------------------------------
  # overwrite method: near_the_screen?
  #--------------------------------------------------------------------------
  def near_the_screen?(dx = nil, dy = nil)
    dx = [Graphics.width, $game_map.width * 256].min/32 - 5 if dx.nil?
    dy = [Graphics.height, $game_map.height * 256].min/32 - 5 if dy.nil?
    ax = $game_map.adjust_x(@real_x) - Graphics.width / 2 / 32
    ay = $game_map.adjust_y(@real_y) - Graphics.height / 2 / 32
    ax >= -dx && ax <= dx && ay >= -dy && ay <= dy
  end
 
end # Game_Event


#==============================================================================
# ¦ Sprite_Base
#==============================================================================


class Sprite_Base < Sprite
 
  #--------------------------------------------------------------------------
  # new method: start_pseudo_animation
  #--------------------------------------------------------------------------
  def start_pseudo_animation(animation, mirror = false)
    dispose_animation
    @animation = animation
    return if @animation.nil?
    @ani_mirror = mirror
    set_animation_rate
    @ani_duration = @animation.frame_max * @ani_rate + 1
    @ani_sprites = []
  end
 
end # Sprite_Base


#==============================================================================
# ¦ Sprite_Battler
#==============================================================================


class Sprite_Battler < Sprite_Base
 
  #--------------------------------------------------------------------------
  # alias method: setup_new_animation
  #--------------------------------------------------------------------------
  alias sprite_battler_setup_new_animation_ace setup_new_animation
  def setup_new_animation
    sprite_battler_setup_new_animation_ace
    return if @battler.pseudo_ani_id <= 0
    animation = $data_animations[@battler.pseudo_ani_id]
    mirror = @battler.animation_mirror
    start_pseudo_animation(animation, mirror)
    @battler.pseudo_ani_id = 0
  end
 
end # Sprite_Battler


#==============================================================================
# ¦ Spriteset_Map
#==============================================================================


class Spriteset_Map
 
  #--------------------------------------------------------------------------
  # overwrite method: create_viewports
  #--------------------------------------------------------------------------
  def create_viewports
    if Graphics.width > $game_map.width * 32 and !$game_map.loop_horizontal?
      dx = (Graphics.width - $game_map.width * 32) / 2
    else
      dx = 0
    end
    dw = [Graphics.width, $game_map.width * 32].min
    dw = Graphics.width if $game_map.loop_horizontal?
    if Graphics.height > $game_map.height * 32 and !$game_map.loop_vertical?
      dy = (Graphics.height - $game_map.height * 32) / 2
    else
      dy = 0
    end
    dh = [Graphics.height, $game_map.height * 32].min
    dh = Graphics.height if $game_map.loop_vertical?
    @viewport1 = Viewport.new(dx, dy, dw, dh)
    @viewport2 = Viewport.new(dx, dy, dw, dh)
    @viewport3 = Viewport.new(dx, dy, dw, dh)
    @viewport2.z = 50
    @viewport3.z = 100
  end
 
end # Spriteset_Map


#==============================================================================
# ¦ Window_Base
#==============================================================================


class Window_Base < Window 
 
  #--------------------------------------------------------------------------
  # overwrite method: draw_gauge
  #--------------------------------------------------------------------------
  def draw_gauge(dx, dy, dw, rate, color1, color2)
    dw -= 2
    fill_w = [(dw * rate).to_i, dw].min
    gauge_h = 6
    gauge_y = dy + line_height - 2 - gauge_h
    outline_colour = gauge_back_color
    outline_colour.alpha = translucent_alpha
    contents.fill_rect(dx, gauge_y - 1, dw + 2, gauge_h + 2, outline_colour)
    dx += 1
    contents.fill_rect(dx, gauge_y, dw, gauge_h, gauge_back_color)
    contents.gradient_fill_rect(dx, gauge_y, fill_w, gauge_h, color1, color2)
  end
 
end # Window_Base


#==============================================================================
# ¦ Window_Selectable
#==============================================================================


class Window_Selectable < Window_Base
 
  #--------------------------------------------------------------------------
  # overwrite method: process_cursor_move
  #-------------------------------------------------------------------------- 
  def process_cursor_move
    return unless cursor_movable?
    last_index = @index
    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)
    cursor_pagedown  if !handle?(:pagedown) && Input.repeat?(:R)
    cursor_pageup    if !handle?(:pageup)  && Input.repeat?(:L)
    Sound.play_cursor if @index != last_index
  end
   
end # Window_Selectable


#==============================================================================
# ¦ Scene_Battle
#==============================================================================


class Scene_Battle < Scene_Base
 
  #--------------------------------------------------------------------------
  # overwrite method: show_normal_animation
  #--------------------------------------------------------------------------
  def show_normal_animation(targets, animation_id, mirror = false)
    animation = $data_animations[animation_id]
    return if animation.nil?
    ani_check = false
    targets.each do |target|
      if ani_check
        target.pseudo_ani_id = animation_id
      else
        target.animation_id = animation_id
      end
      target.animation_mirror = mirror
      abs_wait_short unless animation.to_screen?
      ani_check = true if animation.to_screen?
    end
    abs_wait_short if animation.to_screen?
  end
 
end # Scene_Battle


#==============================================================================
#
# FIM DO ARQUIVO
#
#==============================================================================
Crédito = Rafael Sol Maker
Fonte = Condado Braverhart

_________________
BugFix (para VXACE SP1) Takashi_komuro_by_minato8-d51g9o4

Paga um café? Patreon
Komuro Takashi
Komuro Takashi
Colaborador
Colaborador

Mensagens : 1047
Créditos : 130

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos