O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

YCA-Fog na Batalha

Iniciado por Sato1999, 02/03/2015 às 17:23

Hello People, Aki estou eu postando um script que fiz hj, ele permite usar "Fogs" dentro da batalha.
Script:
#==============================================================================
#
# ◘ YangFly Coding Ace - Ace Battle Fog(or whatever you wanna call this) 
# -- Last Updated: 2015.03.02
# -- Level: Easy
# -- Requires: n/a
# -- Compatibility: Highly
# -- Lag Created: Aulmost Nothing
#==============================================================================

$imported = {} if $imported.nil?
$imported["YCA-BattleFog"] = true

#==============================================================================
# ◘ Updates
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#  2015.03.02 => Started Script and Finished
#==============================================================================
# ◘ Introduction
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#  Se uma Switch tiver On vai ativar a Fog
#  Pode colocar a velociade horizontal e vertical em 2 variaveis
#  Pra mudar a fog de uma script call: changebfog("x")
#  onde x = o nome da fog dentro da pasta "Fogs" que fica dentro da pasta "Graphics"
#  (Você tem que cria-la...)
#==============================================================================
# ◘ Instructions
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#  Você jasabe como faser né?
#  mas nao mata ninguem explicar de novo, coloque abaixo de tudo e acima do
#  main e blablabla...
#==============================================================================
# ◘ Compatibility
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#  Este script overwrite nada então émuito compativel.
#==============================================================================

module YCA
  module Battle_fog
     Default_Z = 2  # valor Z da fog
     FogSwitch = 58 # Switch pra ligar afog
     XSpeedVar = 61 # Variable da velociadade horizontal
     YSpeedVar = 62 # Variable da velociadade vertical
  end
end

#--------------------------------------------------------------------------
# Edits should stop here unless ya know what u doing.
# But don't worry it won't cause computer damage, incontinence, 
# explosion of user's head, coma, death, and/or halitosis. ;3
#--------------------------------------------------------------------------


module Cache
  #--------------------------------------------------------------------------
  # New Method: self.fogs
  #--------------------------------------------------------------------------  
  def self.fogs(filename)
    load_bitmap("Graphics/Fogs/", filename)
  end
end



class Game_System
  #--------------------------------------------------------------------------
  # New Public instance Variable: @battlefog
  #--------------------------------------------------------------------------
  attr_accessor :battlefog
  #--------------------------------------------------------------------------
  # Alias: initialize
  #--------------------------------------------------------------------------
  alias yca_bfog_gamesystem_intialize initialize
  def initialize
    yca_bfog_gamesystem_intialize
    @battlefog = ""
  end
  
end

class Scene_Battle < Scene_Base
  #--------------------------------------------------------------------------
  # Alias: start
  #--------------------------------------------------------------------------
  alias yca_bfog_start start
  def start
    yca_bfog_start
    if $game_switches[YCA::Battle_fog::FogSwitch]
      create_bfog
    end
  end 
  #--------------------------------------------------------------------------
  # New Method: create_bfog
  #--------------------------------------------------------------------------  
  def create_bfog
    @bfog = Plane.new
    @bfog.bitmap = Cache.fogs($game_system.battlefog)
    @bfog.z = YCA::Battle_fog::Default_Z
  end
  #--------------------------------------------------------------------------
  # New Method: move_bfog
  #--------------------------------------------------------------------------  
  def move_bfog
    @bfog.ox += $game_variables[YCA::Battle_fog::XSpeedVar]
    @bfog.oy += $game_variables[YCA::Battle_fog::YSpeedVar]
  end
  #--------------------------------------------------------------------------
  # New Method: dispose_bfog
  #--------------------------------------------------------------------------  
  def dispose_bfog
    @bfog.bitmap.dispose
    @bfog.dispose
  end
  #--------------------------------------------------------------------------
  # Alias: update_basic
  #--------------------------------------------------------------------------
  alias yca_bfog_updatebasic update_basic
  def update_basic
    yca_bfog_updatebasic
    if $game_switches[YCA::Battle_fog::FogSwitch]
      move_bfog
    end
  end  
  #--------------------------------------------------------------------------
  # Alias: terminate
  #-------------------------------------------------------------------------- 
  alias yca_bfog_terminate terminate
  def terminate
    yca_bfog_terminate
    if $game_switches[YCA::Battle_fog::FogSwitch]
      dispose_bfog
    end
  end  
  
end

class Game_Interpreter
  def changebfog(name)
    $game_system.battlefog = name
  end
end


Vlw Flws!

Opa iae Yang x), seria legal uma imagem mostrando o sistema e talz, mas de qualquer maneira deixa eu só dar um toque.

Tem uma mistureba de inglês-português dentro do script, sério  :derp: , tipo o que percebi é que você é um bom maker, mas que na parte de apresentação deixa a desejar kk, talvez por isso tenha pouca atenção em alguns tópicos seu. Como você manja um pouco de inglês, escreve tudo em inglês no script xD, acho que ajuda e talz, e enfim.

O script é legal :D, a ideia é bem legal e adiciona bastante no jogo, acho que deveria fazer um sistema completo de fog, tipo no mapa e na batalha, ai ficaria completo  :wow:

Bom script maninho >.0

Mais galera, eu nao sei se aqui é o local correto de se pergunta, mais como tem aver com o RPGVXACE e é battle, entao la vai:

Existe algum script que permite mostra a barra de sangue do inimigo? Mais ou menos assim: Player da um ataque, QUANDO ele da o ataque mostra a barra de sangue do inimigo, o qt tiro e o qt ainda sobro. Existe?


Pelo que entendi, você deve estar procurando um ENEMY HP BAR. Eu conheço uma. Aqui vai.


Galera esse sprite é show, mais é muito avançado (pelo menos eu achei) nem achei SÓ o script do dano, tinha tantos la que me perdi, tinha audio muito loco, mais nao quero ainda da um passo maior que a perna rs

03/03/2015 às 19:20 #6 Última edição: 03/03/2015 às 19:26 por Skyloftian
Pois então, se você pegar somente ele fica fácil.

Este é o script que te mostrei.
Spoiler
#==============================================================================
# +++ MOG - Enemy HP Meter  (v1.7) +++
#==============================================================================
# By Moghunter 
# http://www.atelier-rgss.com/
#==============================================================================
# Apresenta um medidor animado com o HP do inimigo.
#==============================================================================
# Para ocultar o HP do inimigo use a TAG abaixo na caixa de notas.
#
# <Hide HP>
#
#==============================================================================
# Serão necessários as imagens.
#
# Battle_Enemy_HP_Layout.png
# Battle_Enemy_HP_Meter.png
#
#==============================================================================
# ● Histórico (Version History)
#==============================================================================
# (1.7) - Correção da posição do medidor de HP em algumas sistuações.
# (1.6) - Melhoria no sistema de posição da origem Z.
#==============================================================================
module MOG_ENEMY_HP
   #Posição geral do medidor em relação ao battler.
   POSITION_CORRECTION = [0,0]
   #Posição do medidor de HP.
   HP_METER_POSITION = [3,13]
   #Apresentar o HP do inimigo na seleção do alvo.
   SHOW_ENEMY_HP_SELECTION = true
   #Prioridade do medidor na tela.
   PRIORITY_Z = 101
end

$imported = {} if $imported.nil?
$imported[:mog_enemy_hp] = true

#==============================================================================
# ■ Game Enemy
#==============================================================================
class Game_Enemy < Game_Battler

  attr_accessor :hp_meter_active               
  
  #--------------------------------------------------------------------------
  # ● Initialize
  #--------------------------------------------------------------------------
  alias mog_enemy_hp_initialize initialize
  def initialize(index, enemy_id)
      mog_enemy_hp_initialize(index, enemy_id)
      hide = enemy.note =~ /<Hide HP>/i ? true : false 
      @hp_meter_active = [false,hide]
  end  

end

#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler < Game_BattlerBase
  
  #--------------------------------------------------------------------------
  # ● Item Apply
  #--------------------------------------------------------------------------  
   alias mog_enemy_hp_item_apply item_apply
   def item_apply(user, item)
       mog_enemy_hp_item_apply(user, item)
       self.hp_meter_active[0] = true if self.is_a?(Game_Enemy) and @result.hp_damage != 0   
   end

  #--------------------------------------------------------------------------
  # ● Regenerate HP
  #--------------------------------------------------------------------------
  alias mog_enemy_hp_regenerate_hp regenerate_hp
  def regenerate_hp
      mog_enemy_hp_regenerate_hp
      self.hp_meter_active[0] = true if self.is_a?(Game_Enemy) and @result.hp_damage != 0   
  end
    
end
  
#==============================================================================
# ■ Game Temp
#==============================================================================
class Game_Temp
  
  attr_accessor :cache_enemy_hp
  
  #--------------------------------------------------------------------------
  # ● Initialize
  #--------------------------------------------------------------------------      
  alias mog_enemy_hp_initialize initialize
  def initialize
      mog_enemy_hp_initialize
      cache_ehp
  end
  
  #--------------------------------------------------------------------------
  # ● Cache EHP
  #--------------------------------------------------------------------------     
  def cache_ehp
      @cache_enemy_hp = []
      @cache_enemy_hp.push(Cache.system("Battle_Enemy_HP_Layout"))
      @cache_enemy_hp.push(Cache.system("Battle_Enemy_HP_Meter"))
  end
  
end

#==============================================================================
# ■ Enemy HP
#==============================================================================
class Enemy_HP
  include MOG_ENEMY_HP
  
  #--------------------------------------------------------------------------
  # ● Initialize
  #--------------------------------------------------------------------------    
  def initialize(viewport = nil,enemy,index)
      @enemy = enemy ; @index = index ; @fade_time = -1
      create_layout ; create_hp_meter      
      @layout.opacity = 0 ; @layout.visible = false
      @layout.viewport = viewport ; @hp_meter.opacity = 0
      @hp_meter.visible = false ; @hp_meter.viewport = viewport
      @layout.z = PRIORITY_Z ; @enemy.hp_meter_active[0] = false
      @enemy_old = @enemy ; @enemy_old2 = nil
      @hide = @enemy.hp_meter_active[1]
      set_meter_position ; @force_visbible = false
  end
  
  #--------------------------------------------------------------------------
  # ● Set Meter Position
  #--------------------------------------------------------------------------    
  def set_meter_position
      return if @enemy == nil
      b_pos = [@enemy.screen_x - (@layout.width / 2) + POSITION_CORRECTION[0],
               @enemy.screen_y + POSITION_CORRECTION[1] - (@layout.height / 2)]
      @org_pos1 = [b_pos[0],b_pos[1]]
      @layout.x = @org_pos1[0] ; @layout.y = @org_pos1[1]    
      @org_pos2 = [b_pos[0] + HP_METER_POSITION[0],
                   b_pos[1] + HP_METER_POSITION[1]]
      @hp_meter.x = @org_pos2[0] ; @hp_meter.y = @org_pos2[1]
      @hp_meter.z = PRIORITY_Z    
  end     
      
  #--------------------------------------------------------------------------
  # ● Create HP Meter
  #--------------------------------------------------------------------------        
  def create_layout
      @layout = Sprite.new ; @layout.bitmap = $game_temp.cache_enemy_hp[0]
  end
    
  #--------------------------------------------------------------------------
  # ● Create HP Meter
  #--------------------------------------------------------------------------      
  def create_hp_meter
      @meter_image = $game_temp.cache_enemy_hp[1]
      @meter_cw = @meter_image.width ; @meter_ch = @meter_image.height / 2       
      @hp_meter = Sprite.new
      @hp_meter.bitmap = Bitmap.new(@meter_cw,@meter_ch)
      @hp_width_old = @meter_cw * @enemy.hp / @enemy.mhp 
    end  
  
  #--------------------------------------------------------------------------
  # ● Hp Flow Update
  #--------------------------------------------------------------------------
  def update_hp_flow
      return if !@layout.visible     
      hp_width = @meter_cw * @enemy.hp / @enemy.mhp
      @hp_meter.bitmap.clear ; execute_damage_flow(hp_width)
      hp_src_rect = Rect.new(0,0,hp_width, @meter_ch)
      @hp_meter.bitmap.blt(0,0, @meter_image, hp_src_rect)
  end
    
  #--------------------------------------------------------------------------
  # ● Execute Damage Flow
  #-------------------------------------------------------------------------- 
  def execute_damage_flow(hp_width)
      n = (@hp_width_old - hp_width).abs * 3 / 100
      damage_flow = [[n, 2].min,0.5].max
      @hp_width_old -= damage_flow
      @hp_width_old = hp_width if @hp_width_old <= hp_width 
      src_rect_old = Rect.new(0,@meter_ch,@hp_width_old, @meter_ch)
      @hp_meter.bitmap.blt(0,0, @meter_image, src_rect_old)       
  end    
  
  #--------------------------------------------------------------------------
  # ● Dispose
  #--------------------------------------------------------------------------      
  def dispose
      return if @layout == nil
      @layout.dispose ; @hp_meter.bitmap.dispose ; @hp_meter.dispose
  end
  
  #--------------------------------------------------------------------------
  # ● Update
  #--------------------------------------------------------------------------      
  def update
      return if @meter_image == nil
      return if @hide
      return if can_update_force_refresh?
      update_clear ; update_fade ; update_visible
      update_hp_flow ; refresh if @enemy.hp_meter_active[0]
  end  
  
  #--------------------------------------------------------------------------
  # ● Can Update Force Refresh
  #--------------------------------------------------------------------------      
  def can_update_force_refresh?
      return false if @index != 0
      return false if !SHOW_ENEMY_HP_SELECTION
      return false if $imported[:mog_battle_cursor] == nil
      return false if $game_temp.battle_cursor_data == nil
      @force_visbible = true ; force_refresh if can_force_refresh?
      return true
  end
    
  #--------------------------------------------------------------------------
  # ● Update force_refresh
  #--------------------------------------------------------------------------        
  def can_force_refresh?
      return false if @enemy_old2 == $game_temp.battle_cursor_data
      return false if $game_temp.battle_cursor_data.is_a?(Game_Actor)
      return true
  end
  
  #--------------------------------------------------------------------------
  # ● Update clear
  #--------------------------------------------------------------------------        
  def update_clear
      return if !@force_visbible
      @force_visbible = false ; @enemy = @enemy_old ; @enemy_old2 = nil
      @layout.visible = false ;  @hp_meter.visible = false         
  end
    
  #--------------------------------------------------------------------------
  # ● Update Fade
  #--------------------------------------------------------------------------        
  def update_fade
      @fade_time -= 1 if @fade_time > 0
      return if @fade_time != 0 
      @layout.opacity -= 10 ; @hp_meter.opacity -= 10
      @layout.x += 1 ; @hp_meter.x += 1 ; @fade_time = -1 if @layout.opacity == 0
  end  
  
  #--------------------------------------------------------------------------
  # ● Update Visible
  #--------------------------------------------------------------------------        
  def update_visible 
      return if !@layout.visible 
      vis = can_visible? ; @layout.visible = vis ; @hp_meter.visible = vis
  end
  
  #--------------------------------------------------------------------------
  # ● Refresh
  #--------------------------------------------------------------------------          
  def refresh
      set_meter_position
      @enemy.hp_meter_active[0] = false ; @fade_time = 60
      @layout.opacity = 255  ; @hp_meter.opacity = 255    
      @layout.visible = true ; @hp_meter.visible = true
      @layout.x = @org_pos1[0] ;  @layout.y = @org_pos1[1]
      @hp_meter.x = @org_pos2[0]; @hp_meter.y = @org_pos2[1]      
      hp_width = @meter_cw * @enemy.hp / @enemy.mhp 
      @hp_width_old = hp_width if @hp_width_old < hp_width
      update_hp_flow
  end
  
  #--------------------------------------------------------------------------
  # ● Refresh
  #--------------------------------------------------------------------------          
  def force_refresh
      return if $game_temp.battle_cursor_data == nil
      @enemy_old2 = $game_temp.battle_cursor_data
      @enemy = $game_temp.battle_cursor_data
      set_meter_position
      @enemy.hp_meter_active[0] = false ; @fade_time = 2
      @layout.opacity = 255 ;  @hp_meter.opacity = 255    
      @layout.visible = true ; @hp_meter.visible = true
      @layout.x = @org_pos1[0] ;  @layout.y = @org_pos1[1]
      @hp_meter.x = @org_pos2[0]; @hp_meter.y = @org_pos2[1]       
      hp_width = @meter_cw * @enemy.hp / @enemy.mhp 
      @hp_width_old = hp_width ; update_hp_flow
  end  
  
  #--------------------------------------------------------------------------
  # ● Can Visible?
  #--------------------------------------------------------------------------          
  def can_visible?
      return false if @layout.opacity == 0   
      return true
  end
    
end

#==============================================================================
# ■ Spriteset Battle
#==============================================================================
class Spriteset_Battle
  
  #--------------------------------------------------------------------------
  # ● Initialize
  #--------------------------------------------------------------------------  
  alias mog_enemy_hp_initialize initialize
  def initialize
      mog_enemy_hp_initialize
      create_enemy_hp
  end
  
  #--------------------------------------------------------------------------
  # ● Create Battle Hud
  #--------------------------------------------------------------------------    
  def create_enemy_hp
      @enemy_hp = []      
      $game_troop.members.each_with_index do |i, index| @enemy_hp.push(Enemy_HP.new(nil,i,index)) end
  end
  
  #--------------------------------------------------------------------------
  # ● Dispose
  #--------------------------------------------------------------------------      
  alias mog_enemy_hp_dispose dispose
  def dispose
      dispose_enemy_hp
      mog_enemy_hp_dispose
  end  
  
  #--------------------------------------------------------------------------
  # ● Dispose Enemy HP
  #--------------------------------------------------------------------------        
  def dispose_enemy_hp
      return if @enemy_hp == nil
      @enemy_hp.each {|sprite| sprite.dispose } ; @enemy_hp.clear
  end
  
  #--------------------------------------------------------------------------
  # ● Update
  #--------------------------------------------------------------------------        
  alias mog_enemy_hp_update update
  def update
      mog_enemy_hp_update
      update_enemy_hp
  end
  
  #--------------------------------------------------------------------------
  # ● Update Enemy HP
  #--------------------------------------------------------------------------          
  def update_enemy_hp
      return if @enemy_hp == nil
      @enemy_hp.each {|sprite| sprite.update }
  end
   
end
[close]

Ele necessita dessas duas imagens:
Spoiler
Save-as na pasta "Pasta do Projeto\Graphics\System".
Nomeando elas respectivamente, Battle_Enemy_HP_Layout.png e Battle_Enemy_HP_Meter.png . Depois disso ta pronto.
Fiz um teste no meu projeto, que inclusive usa outro sistema de batalha, e deu certinho, compatibilidade até com outros sistemas de batalha.

Spoiler
[close]




Desculpa ai por ter desviado o assunto do tópico.

EDIT: Quanto ao script, YangFly Jitter, é uma ideia interessante, acho que deve seguir as dicas do Raizen.  :ok:


Your friend Sky
Quédate con Dios


 :<3: :<3: :*-*: :*-*: :wow: :wow: esse mesmo maninho vlw msm maninho, agora os jogadores nao vao fica com aquela aflição:" poxa meu essa po$#@ nao morre?" kkk vlw mesmo em

A, sim, ja estou fazendo o que o Raizen falou, é que estava meio ocupado esta semana.
Agora, uma pergunta?
Eu crio um novo topico ou mudo o nome desse?

Citação de: YangFly Jitter online 09/03/2015 às 22:08
A, sim, ja estou fazendo o que o Raizen falou, é que estava meio ocupado esta semana.
Agora, uma pergunta?
Eu crio um novo topico ou mudo o nome desse?
Se é o mesmo script, porém atualizado(o que me parece o caso), muda esse daqui x), se for outro totalmente novo ai pode criar outro tópico.