🤔 Para Refletir : "O que importa não é se criticam ou elogiam seu jogo, mas como você lida com isso." - FL

Ajuda com script

Membro Membro
Postagens
2
Bravecoins
0
Tipo isso é um sistema de batalha frontal, queria saber se alguém sabe como eu coloco o sprite do meu personagem e a foto dele na batalha, bom uma imagem vale mais que mil palavras ae está para vocês entender melhor:
btla.png
Código:
#-------------------------------------------------------------------
# Ellye's Combat Interface
# A Combat UI script made by Ellye.
# This is a free script for all use, provided "as is", no warranties.
#-------------------------------------------------------------------
 
#--------------------------------------------------------------------------
# * Changes the Maximum number of battle party members to 6
#--------------------------------------------------------------------------
class Game_Party
  def max_battle_members
    return 6
  end
end
 
class Spriteset_Battle
  def create_actors
     @actor_sprites = Array.new(6) { Sprite_Battler.new(@viewport1) }
  end
end
 
#--------------------------------------------------------------------------
# * Uses charset sprites as Actor battlers sprites
#--------------------------------------------------------------------------
class Game_Actor
  attr_accessor :screen_x
  attr_accessor :screen_y                
  attr_accessor :screen_z
 
  alias :old_initialize :initialize
  def initialize(actor_id)
    old_initialize(actor_id)
    @screen_x = 0
    @screen_y = 0
  end
 
  def screen_z
    return 100
  end
 
  def use_sprite?
    return true
  end
 
  alias :old_on_battle_start :on_battle_start
  def on_battle_start
    old_on_battle_start
    @screen_x = 180 + (92 * (self.index % 3))
    self.index < 3 ? @screen_y = 320 : @screen_y = 384
  end
 
end
 
class Sprite_Battler
  def update_bitmap
    if @battler.battler_name == "" && @battler.character_name != ""
      @battler.character_index < 4 ? rect_y = 96 : rect_y = 224 #Selecting correct row for the sprite (Standard size)
      rect_x =  32 + (96*(@battler.character_index % 4)) #Selecting correct colunm  for the sprite (Standard size)
      new_bitmap_cs = Cache.character(@battler.character_name) #Load charset
      new_bitmap = Bitmap.new(32, 32) #Make empty, standard character sized, bitmap
      new_bitmap.blt(0, 0, new_bitmap_cs, Rect.new(rect_x, rect_y, 32, 32))  #Copies the sprite from the charset to the new bitmap
    else
      new_bitmap = Cache.battler(@battler.battler_name, @battler.battler_hue)
    end
   
    if bitmap != new_bitmap
      self.bitmap = new_bitmap
      init_visibility
    end
   
  end
 
  #--------------------------------------------------------------------------
  # * Changing the duration of some effects, and adding a new :pounce effect for physical attacks
  #--------------------------------------------------------------------------
  def start_effect(effect_type)
    @effect_type = effect_type
    case @effect_type
    when :appear
      @effect_duration = 32
      @battler_visible = true
    when :disappear
      @effect_duration = 64
      @battler_visible = false
    when :pounce
      @effect_duration = 32
      @battler_visible = true
    when :whiten
      @effect_duration = 32
      @battler_visible = true
    when :blink
      @effect_duration = 40
      @battler_visible = true
    when :collapse
      @effect_duration = 48
      @battler_visible = false
    when :boss_collapse
      @effect_duration = bitmap.height
      @battler_visible = false
    when :instant_collapse
      @effect_duration = 16
      @battler_visible = false
    end
    revert_to_normal
  end
#--------------------------------------------------------------------------
# * Updating the Pounce Effect
#--------------------------------------------------------------------------
    def update_effect
      if @effect_duration > 0
        @effect_duration -= 1
        case @effect_type
        when :pounce
          update_pounce
        when :whiten
          update_whiten
        when :blink
          update_blink
        when :appear
          update_appear
        when :disappear
          update_disappear
        when :collapse
          update_collapse
        when :boss_collapse
          update_boss_collapse
        when :instant_collapse
          update_instant_collapse
        end
        @effect_type = nil if @effect_duration == 0
      end
    end
 
  def update_pounce
    @effect_duration > 16 ? self.oy += 32 - @effect_duration : self.oy += @effect_duration
  end
 
  alias :old_revert_to_normal :revert_to_normal
  def revert_to_normal
    old_revert_to_normal
    self.oy = bitmap.height
  end
 
end
 
#--------------------------------------------------------------------------
# *  Battle Scene layout
#--------------------------------------------------------------------------
class Scene_Battle
  alias :old_create_status_window :create_status_window
  alias :old_create_info_viewport :create_info_viewport
 
  def create_status_window
    old_create_status_window
    @status_window.x = 137
    @status_window.set_handler(:ok,     method(:on_actor_ok)) #We will use the status window for party-targetting
    @status_window.set_handler(:cancel, method(:on_actor_cancel)) #We will use the status window for party-targetting
  end
 
  def create_info_viewport
    old_create_info_viewport
    @info_viewport.ox = 0
  end
 
  def move_info_viewport(ox)
    current_ox = @info_viewport.ox #don't move anymore
  end
   
  alias :old_create_actor_command_window :create_actor_command_window
  def create_actor_command_window
    old_create_actor_command_window
    @actor_command_window.x = Graphics.width - @actor_command_window.width
  end
 
  def select_actor_selection
    @status_window.refresh
    @status_window.activate #We will use the status window for party-targetting
  end
 
  def on_actor_ok
    BattleManager.actor.input.target_index = @status_window.index #We will use the status window for party-targetting
    @actor_window.hide
    @skill_window.hide
    @item_window.hide
    next_command
  end
 
  def abs_wait_short
    abs_wait(20)
  end
 
  def execute_action
    if @subject.actor?
      @subject.sprite_effect_type = :pounce #changed to the custom pounce effect
    else
      @subject.sprite_effect_type = :whiten #enemies still look better with whiten
    end
    use_item
    abs_wait_short #Slowing things down a bit
    @log_window.wait_and_clear
  end
 
end
 
 #--------------------------------------------------------------------------
 # *  Battle Status Window layout
 #--------------------------------------------------------------------------
class Window_BattleStatus
  def initialize
      super(0, 0, window_width, window_height)
      refresh
      self.openness = 0
      self.opacity = 0
  end
  def window_width
    270
  end
  def window_height
    144
  end
  def col_max
    return 3
  end
  def spacing
    return 6
  end
  def standard_padding
    return 0
  end
  def item_height
    return 48
  end
  def item_rect(index)
      rect = Rect.new
      rect.width = item_width
      rect.height = item_height
      rect.x = index % col_max * (item_width + spacing)
      rect.y = 8 + (index / col_max * (item_height + 16))
      rect
  end
 
  def draw_vertical_actor_icons(actor, x, y, height = 24)
    icons = (actor.state_icons + actor.buff_icons)[0, height / 24]
    icons.each_with_index {|n, i| draw_icon(n, x, y + 24*i) }
  end
 
  def draw_item(index)
    actor = $game_party.battle_members[index]
    rect = item_rect(index)
    draw_actor_hp(actor, rect.x, rect.y+32, rect.width)
    draw_vertical_actor_icons(actor, rect.x, rect.y)
    if $data_system.opt_display_tp
      draw_actor_mp(actor, rect.x, rect.y+48, (rect.width/2)-1)
      draw_actor_tp(actor, rect.x+(rect.width/2)+2, rect.y+48, (rect.width/2)-1)
    else
      draw_actor_mp(actor, rect.x, rect.y+48, rect.width)
    end
  end
end
 
#--------------------------------------------------------------------------
# *  Battle Log - slowing it down a bit
#--------------------------------------------------------------------------
class Window_BattleLog
 
  def display_action_results(target, item)
    if target.result.used
      last_line_number = line_number
      display_critical(target, item)
      display_damage(target, item)
      display_affected_status(target, item)
      display_failure(target, item)
      wait if line_number > last_line_number
    end
  end
 
  def wait_and_clear
    wait while @num_wait < 4 if line_number > 0
    clear
  end
 
end
 
Voltar
Topo