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

Como fazer os personagens atacarem com a animação das armas

Iniciado por Preza Negra, 10/10/2013 às 12:21

Bom, é basicamente o que ta descrito ai no assunto. queria saber como fazer para os personagens atacarem
com as animações das armas, tipo: ele ta usando uma espada e eu quero ver ele usando à animação da espada mas ta acontecendo assim no projeto, qualquer arma que ele estiver usando à animação sera sempre a mesma.
tem como mudar isso?  :hm:

Ter tem. Porém você tem que usar ABS's que dão suporte a isto.
Geralmente os ABS's pegam o ícone da arma e criam a animação
e outros contam somente com um gráfico pré-definido para tal.

No spoiler tem um vídeo de um ABS (um dos melhores na minha
opinião) e que faz a animação baseada no ícone da arma.


Spoiler
[close]

aqui coloque isso como script
# Weapon And Sounds Script
module Black_Core
  Voice_Files = [""] #Aqui coloque os sons que vão fazer ao atacar
  
  # Volume dos sons
  Voice_Volume = 80
end

class Scene_Map < Scene_Base
  attr_accessor :spriteset
end

class Spriteset_Map
  alias das_update update
  alias das_initialize initialize
  alias das_dispose dispose
  def initialize
    @trash = []
    das_initialize
    @weapon_graphic = Sprite.new(@viewport1)
    @weapon_graphic.ox = 22
    @weapon_graphic.oy = 22
    @attacking = false
    @attack_timer = 0
    @angles = {2=>[80,110,140,170],4=>[340,10,40,70],6=>[290,260,230,200],8=>[290,320,350,20]}
    @correction = {2=>[-8,-10],4=>[0,-10],6=>[0,-4],8=>[4,-10]}
    @z_values = {2=>120,4=>50,6=>120,8=>50}
    refresh_weapon
  end
  def refresh_weapon
    @weapon_bitmap.dispose unless @weapon_bitmap.nil?
    @weapon_bitmap = nil
    return if $game_party.members.empty?
    index = ($game_party.members[0].weapons[0].icon_index rescue nil)
    unless index == nil
      temp = Cache.system("Iconset")
      @weapon_bitmap = Bitmap.new(24,24)
      @weapon_bitmap.blt(0,0,temp,Rect.new(index%16*24,index/16*24,24,24))
      temp.dispose
      temp = nil
    end
  end
  def dispose
    das_dispose
    @weapon_graphic.bitmap = nil
    unless @weapon_bitmap.nil?
      @weapon_bitmap.dispose
      @weapon_bitmap = nil
    end
    @weapon_graphic.dispose
    @weapon_graphic = nil
  end
  def update
    das_update
    update_weapon_graphic if @attacking
  end
  def update_weapon_graphic
    @weapon_graphic.x = $game_player.screen_x + @correction[$game_player.direction][0]
    @weapon_graphic.y = $game_player.screen_y + @correction[$game_player.direction][1]
    case @attack_timer
    when 12
      @weapon_graphic.angle = @angles[$game_player.direction][0]
      @weapon_graphic.z = @z_values[$game_player.direction]
    when 9
      @weapon_graphic.angle = @angles[$game_player.direction][1]
      @weapon_graphic.z = @z_values[$game_player.direction]
    when 6
      @weapon_graphic.angle = @angles[$game_player.direction][2]
      @weapon_graphic.z = @z_values[$game_player.direction]
    when 3
      @weapon_graphic.angle = @angles[$game_player.direction][3]
      @weapon_graphic.z = @z_values[$game_player.direction]
    when 0
      @attacking = false
      @weapon_graphic.bitmap = nil
    end
    @weapon_graphic.update
    @attack_timer -= 1
  end
  def weapon_animation
    return if @weapon_bitmap.nil?
    @weapon_graphic.bitmap = @weapon_bitmap
    @attacking = true
    @attack_timer = 12
  end
end
class Game_Map
alias das_update update
 def update(arg=false)
    das_update(arg)
    update_action_system 
  end
  def update_action_system
    if Input.trigger?(Input::X)
      $game_player.attack
    end
  end
end

class Game_Player < Game_Character
    def attack
    play_voice 
    SceneManager.scene.spriteset.weapon_animation 
  end
def play_voice
    RPG::SE.new(Black_Core::Voice_Files[rand(Black_Core::Voice_Files.size)],Black_Core::Voice_Volume).play 
  end  
end

Só uma duvida...
to usando o sistema de batalha do Mog.
Spoiler
não vai interfere no sistema não?