[Script] [ACE] [Message] Message Busts 1.1

sanggameboysanggameboy Posts: 1,943Registered
[align=center][size=xx-large]Galv’s Message Busts 1.1[/size][/align]

[chapter]Giới thiệu[/chapter]
Thay vì hiện face vuông bị cắt bởi 4 góc xấu xí, ta có thể sử dụng dạng face to hơn để bỏ vào khung lời thoại. Nhìn hình để hiểu rõ hơn :D
Một script mà mình rất thích :)

[chapter]Screenshots[/chapter]

busts1.jpg

busts2.jpg

[chapter]Script[/chapter]
#------------------------------------------------------------------------------#
#  Galv's Message Busts
#------------------------------------------------------------------------------#
#  For: RPGMAKER VX ACE
#  Version 1.1
#------------------------------------------------------------------------------#
#  2013-01-13 - version 1.1 - added option to make busts slide onto the screen
#  2012-12-01 - version 1.0 - release
#------------------------------------------------------------------------------#
#  This script automatically displays a message bust instead of a face.
#------------------------------------------------------------------------------#
#  INSTRUCTIONS:
#  Put in script list below Materials and above Main.
#
#  Put bust images in Graphics/Pictures/ and name them the same as the face
#  graphic used in the message, plus the position of the face in it.
#  For example:
#  If the message shows "Actor1" face file and uses the first face in that file
#  then you will name the bust image "Actor1-1.png"
#
#  Download the demo if you don't understand
#------------------------------------------------------------------------------#
#  SCRIPT CALL
#------------------------------------------------------------------------------#
#  
#  bust_mirror(x)           # x can be true or false. All messages after this
#                           # call will change until changed again.
#                           # false = on left. true = on right and flipped.
#
#------------------------------------------------------------------------------#
 
($imported ||= {})["Galvs_Message_Busts"] = true
module Galv_Bust
 
#------------------------------------------------------------------------------#
#  SCRIPT SETTINGS
#------------------------------------------------------------------------------#
 
  DISABLE_SWITCH = 1   # Turn swith ON to disable busts and show normal face
   
  BUST_Z = -1           # adds to z value of busts if needed. A negative number
                       # will make the bust appear below the message window.
   
  BUST_Y_OVER = false  # can be true or false
                       # true = busts sit at the bottom of the screen
                       # false = busts sit on top of the message window
 
  TEXT_X = 0           # Offset text when displaying busts above the message
                       # window. The script automatically offsets the text x 
                       # by the bust image width IF the BUST_Z is 0 or more.
 
  SLIDE = true         # Slide portrait onto the screen instead of fading in.
   
#------------------------------------------------------------------------------#
#  END SCRIPT SETTINGS
#------------------------------------------------------------------------------#
 
end
 
 
class Game_Interpreter
   
  def bust_mirror(state)
    $game_message.mirror = state
  end
 
  alias galv_busts_command_101 command_101
  def command_101
    $game_message.bust_name = @params[0]
    $game_message.bust_index = @params[1]
    galv_busts_command_101
  end
end # Game_Interpreter
 
 
class Game_Message
  attr_accessor :bust_name
  attr_accessor :bust_index
  attr_accessor :mirror
   
  alias galv_busts_message_initialize initialize
  def initialize
    galv_busts_message_initialize
    @mirror = false
  end
 
  alias galv_busts_message_clear clear
  def clear
    @bust_name = ""
    @bust_index = 0
    galv_busts_message_clear
  end
end # Game_Message
 
 
class Window_Message < Window_Base
   
  alias galv_busts_window_create_back_bitmap create_back_bitmap
  def create_back_bitmap
    @bust = Sprite.new if @bust.nil?
    @bust.visible = true
    @bust.opacity = 0
    @bust.z = z + Galv_Bust::BUST_Z
    galv_busts_window_create_back_bitmap
  end
   
  alias galv_busts_window_dispose dispose
  def dispose
    galv_busts_window_dispose
    dispose_bust
  end
   
  def dispose_bust
    @bust.dispose if !@bust.nil?
    @bust.bitmap.dispose if !@bust.bitmap.nil?
  end
   
  alias galv_busts_window_update_back_sprite update_back_sprite
  def update_back_sprite
    galv_busts_window_update_back_sprite
    update_bust if openness > 0
  end
   
  def update_bust
    if !$game_message.bust_name.empty? && !$game_switches[Galv_Bust::DISABLE_SWITCH]
      @bust.mirror = $game_message.mirror
      @bust.bitmap = Cache.picture($game_message.bust_name + "-" + ($game_message.bust_index + 1).to_s)
      if !$game_message.mirror
        if Galv_Bust::SLIDE
          @bust.x = ((openness.to_f / 255) * @bust.width) - @bust.width
        else
          @bust.x = 0
        end
      else
        if Galv_Bust::SLIDE
          @bust.x = Graphics.width - ((openness.to_f / 255) * @bust.width)
        else
          @bust.x = Graphics.width - @bust.bitmap.width
        end
      end
       
      if $game_message.position == 2 && !Galv_Bust::BUST_Y_OVER
        @bust.y = Graphics.height - @bust.bitmap.height - self.height
      else
        @bust.y = Graphics.height - @bust.bitmap.height
      end
    else
      @bust.bitmap = nil
    end
    if $game_switches[Galv_Bust::DISABLE_SWITCH]
      @bust.opacity = 0
    else
      @bust.opacity = openness
       
    end
    @bust.update
  end
   
  def new_line_x
    if $game_switches[Galv_Bust::DISABLE_SWITCH]
      $game_message.face_name.empty? ? 0 : 112
    else
      if @bust.z >= self.z && !$game_message.mirror && $game_message.position == 2
        $game_message.face_name.empty? ? 0 : @bust.bitmap.width + Galv_Bust::TEXT_X
      else
        return 0
      end
    end
  end
   
  def draw_face(face_name, face_index, x, y, enabled = true)
    return if !$game_message.face_name.empty? && !$game_switches[Galv_Bust::DISABLE_SWITCH]
    super
  end
 
end # Window_Message < Window_Base

DOWNLOAD DEMO Ver 1.0 (CŨ)

[chapter]Credit[/chapter]
Galv's

[chapter]Điều khoản sử dụng[/chapter]
Xài thoải mái. Nhưng chú ý nhớ credit cho người ta đàng hoàng :D

[chapter]Nguồn[/chapter]
Click

Comments

  • MünchhausenMünchhausen Posts: 109Registered
    Sửa lẹ vãi. Vừa tính ghi nó free cho dự án thương mại, reply phát thấy sửa rồi. xD
    "as long as you give credit", nhưng mà vẫn phải ghi credit . xD
  • sanggameboysanggameboy Posts: 1,943Registered
    Sửa lẹ vãi. Vừa tính ghi nó free cho dự án thương mại, reply phát thấy sửa rồi. xD
    "as long as you give credit", nhưng mà vẫn phải ghi credit . xD

    Em copy kiểu mẫu từ mấy bài trước mà quên sửa đoạn đó. Sau đó mới để ý :P
  • Dang_KhoaDang_Khoa Posts: 3,861Administrators
    Mấy script message cũng có cái này nữa thì phải, cái này có gì hay hơn mấy cái kia không em ^^
  • sanggameboysanggameboy Posts: 1,943Registered
    Dang_Khoa wrote:
    Mấy script message cũng có cái này nữa thì phải, cái này có gì hay hơn mấy cái kia không em ^^

    Cái này có hiệu ứng chuyển tiếp face, dễ xài, thuộc loại bình dân.
    Ai muốn làm game đơn giản, không cầu kì phức tạp thì xài cái này cho tiện :D
Sign In or Register to comment.