Arena RPG Maker
Olá, visitante!
Seja bem-vindo ao fórum Arena RPG Maker, caso queira aprender sobre criação de jogos, está no fórum certo. Esperamos que possa aprender tanto quanto possa nos ensinar aqui.

Atenciosamente,
Equipe Arena RPG Maker.
Arena RPG Maker

Estamos de volta o/ ... Ou não.Eu amo a -Dark
Doações para o fórum abertas, clique aqui e saiba mais.
Últimos assuntos
» Tileset Converter to MV
Sex 12 Maio 2017, 13:07 por Douggi

» [Dúvida] Como tirar a porcentagem de esquiva
Ter 09 Maio 2017, 22:15 por Neil Flame Runner

» Pack Resources, Sprites e etc
Qua 23 Dez 2015, 09:30 por raydengv

» Download RPG Maker 2003 + RTP em português
Ter 22 Dez 2015, 08:14 por ::KimMax::

» Fantasy Art Online
Dom 18 Out 2015, 16:42 por daviih123

» Você vai ter medo do Nerve gear?
Sab 25 Jul 2015, 16:02 por Kirito-kun

» O Barato é louco
Sab 27 Jun 2015, 15:26 por Halt

» Download RPG Maker 2000 + RTP em português
Qui 21 Maio 2015, 19:28 por Wismael

» Divulgando meu grupo e página do Facebook
Ter 19 Maio 2015, 13:06 por Halt

» Craftage Engine (Eclipse Origins totalmente modificado e sem bugs)
Seg 27 Abr 2015, 18:24 por pigot98


Você não está conectado. Conecte-se ou registre-se

Ver o tópico anterior Ver o tópico seguinte Ir em baixo  Mensagem [Página 1 de 1]

1 BugFix (Para VXAce SP1) em Sex 28 Dez 2012, 12:53

Halt

avatar
Administrador
Administrador
Komuro Takashi escreveu:
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


__________________________________________

Ei Convidado, sim você mesmo! Ajude o fórum à crescer postando coisas úteis, dê sugestões para melhorar-mos e divulgue o fórum.

Step inside, see the devil in I.

Gifts-
Fantasy - Fantasy - Fantasy - ~Razor - Darkmel

Zerei a internet
Ver perfil do usuário http://arenarpgmaker.eclipserpg.com

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo  Mensagem [Página 1 de 1]

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum