• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

A tutorial on Putting Facesets in games!

xantor

...:::...
124
Posts
19
Years
  • A tutorial on Putting Facesets in RMXP!

    This is a tutorial origionally written by someone but changed around a little. I missed facesets in RMXP, so I found a code muddled with it and dada. Facesets.


    Firstly go to Tools-Script Editor.
    Example




    Once in script editor scroll down the left hand sroll bar and click on Message. Delete all the text there and replace it with this:

    #==============================================================================
    # ■ Main
    #------------------------------------------------------------------------------
    # 各クラスの定義が終わった後、ここから実際の処理が始まります。
    #==============================================================================

    begin

    # This variable determines the default font type
    $defaultfonttype = "Tahoma"
    # This variable determines the default font size
    $defaultfontsize = 22

    # トランジション準備
    Graphics.freeze
    # シーンオブジェクト (タイトル画面) を作成
    $scene = Scene_Title.new
    # $scene が有効な限り main メソッドを呼び出す
    while $scene != nil
    $scene.main
    end
    # フェードアウト
    Graphics.transition(20)
    rescue Errno::ENOENT
    # 例外 Errno::ENOENT を補足
    # ファイルがオープンできなかった場合、メッセージを表示して終了する
    filename = $!.message.sub("No such file or directory - ", "")
    print("File #{filename} not found.")
    end
    #Are we showing a face this time?
    $face_showing = nil
    Example




    Now scroll back up and go to Window_Message. Now delete whatever was there and replace it with:

    #==================================
    # Window_Message
    #-------------------------------
    # The message window.
    #==================================
    class Window_Message < Window_Selectable
    attr_accessor :autoclosetime
    attr_accessor :op
    #-------------------------------
    # Object Initialization
    #-------------------------------
    def initialize
    super(80, 304, 480, 160)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.visible = false
    self.z = 9998
    @fade_in = false
    @fade_out = false
    @contents_showing = false
    @cursor_width = 0
    @autoclosetime = -1
    @op = 255
    @refreshflag = false
    self.active = false
    self.index = -1
    # ***ccoa***
    # face for the message box
    @face = Sprite.new
    end
    #-------------------------------
    # Garbage Collection
    #-------------------------------
    def dispose
    terminate_message
    $game_temp.message_window_showing = false
    if @input_number_window != nil
    @input_number_window.dispose
    end
    super
    end
    #-------------------------------
    # Message Termination Process
    #-------------------------------
    def terminate_message
    self.active = false
    self.pause = false
    self.index = -1
    self.contents.clear
    @contents_showing = false
    if $game_temp.message_proc != nil
    $game_temp.message_proc.call
    end
    $game_temp.message_text = nil
    $game_temp.message_proc = nil
    $game_temp.choice_start = 99
    $game_temp.choice_max = 0
    $game_temp.choice_cancel_type = 0
    $game_temp.choice_proc = nil
    $game_temp.num_input_start = 99
    $game_temp.num_input_variable_id = 0
    $game_temp.num_input_digits_max = 0
    if @gold_window != nil
    @gold_window.dispose
    @gold_window = nil
    end
    # ***ccoa***
    #if there was a face showing, make it invisible
    if $face_showing != nil
    @face.visible = false
    end
    end
    #-------------------------------
    # Refresh
    #-------------------------------
    def refresh
    self.contents.clear
    self.contents.font.color = normal_color
    self.contents.font.name = "Arial"
    self.contents.font.size = 18
    x = y = 0
    @cursor_width = 0
    @autoclosetime = -1
    @refreshflag = true
    lineheight = 32
    active = ""
    a = ""
    centerflag = false
    rightflag = false
    bannerflag = false
    if $game_temp.choice_start == 0
    x = 8
    end
    if $game_temp.message_text != nil
    text = $game_temp.message_text
    begin
    last_text = text.clone
    text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
    end until text == last_text
    text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
    $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
    end
    text.gsub!(/\\\\/) { "\000" }
    text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
    text.gsub!(/\\[Gg]/) { "\002" }
    text.gsub!(/\\[Ii]\[([0-9]+)\]/) { "\003[#{$1}]" }
    text.gsub!(/\\[Ff]\[([0-9]+)\]/) { "\004[#{$1}]" }
    text.gsub!(/\\[Aa]\[([0-9]+)\]/) { "\005[#{$1}]" }
    text.gsub!(/\\[Xx]/) { "\006" }
    text.gsub!(/\\[Rr]/) { "\007" }
    text.gsub!(/\\[Dd]/) { "\011" }
    text.gsub!(/\\[Ss]\[([0-9]+)\]/) { "\023[#{$1}]" }
    text.gsub!(/\\[Bb]/) { "\017" }
    text.gsub!(/\\[Ww]\[([0-9]+)\]/) { "\014[#{$1}]" }
    text.gsub!(/\\[Mm]\[([0-9]+)\]/) { "\015[#{$1}]" }
    text.gsub!(/\\[Oo]\[([0-9]+)\]/) { "\016[#{$1}]" }
    text.gsub!(/\\[Jj]\[([0-9]+)\]/) { "\013[#{$1}]" }
    text.gsub!(/\\[Hh]\[([0-9]+)\]/) { "\021[#{$1}]" }
    text.gsub!(/\\[Kk]\[([0-9]+)\]/) { "\022[#{$1}]" }
    while ((c = text.slice!(/./m)) != nil)
    if c == "\000"
    c = "\\"
    end
    if c == "\001"
    text.sub!(/\[([0-9]+)\]/, "")
    color = $1.to_i
    if color >= 0 and color <= 7
    self.contents.font.color = text_color(color)
    end
    next
    end
    if c == "\002"
    if @gold_window == nil
    @gold_window = Window_Gold.new
    @gold_window.x = 560 - @gold_window.width
    if $game_temp.in_battle
    @gold_window.y = 192
    else
    @gold_window.y = self.y >= 128 ? 32 : 384
    end
    @gold_window.opacity = self.opacity
    @gold_window.back_opacity = self.back_opacity
    end
    next
    end
    if c == "\003"
    text.sub!(/\[([0-9]+)\]/, "")
    item_sub = $1.to_i
    c = $data_items[item_sub].name
    l = self.contents.text_size(c).width
    draw_item_name($data_items[item_sub], x, y * 32 + 1)
    x = x + l + 24
    next
    end
    if c == "\004"
    text.sub!(/\[([0-9]+)\]/, "")
    fontize = $1.to_i
    case fontize
    when 1
    self.contents.font.name = "Arial"
    when 2
    self.contents.font.name = "High Tower Text"
    when 3
    self.contents.font.name = "Tw Cen MT"
    when 4
    self.contents.font.name = "Tahoma"
    end
    next
    end
    if c == "\005"
    text.sub!(/\[([0-9]+)\]/, "")
    @autoclosetime = $1.to_i
    next
    end
    if c == "\006"
    centerflag = true
    next
    end
    if c == "\007"
    rightflag = true
    next
    end
    if c == "\011"
    self.contents.font.name = "Arial"
    self.contents.font.size = 18
    self.contents.font.color = normal_color
    lineheight = 32
    next
    end
    if c == "\014"
    text.sub!(/\[([0-9]+)\]/, "")
    w_sub = $1.to_i
    c = $data_weapons[w_sub].name
    l = self.contents.text_size(c).width
    bitmap = RPG::Cache.icon($data_weapons[w_sub].icon_name)
    self.contents.blt(x+4, y * 32+ 4, bitmap, Rect.new(0, 0, 24, 24))
    x += 28
    self.contents.draw_text(x+4, 32 * y, l+32, lineheight, c)
    x = x + l
    next
    end
    if c == "\015"
    text.sub!(/\[([0-9]+)\]/, "")
    a_sub = $1.to_i
    c = $data_armors[a_sub].name
    l = self.contents.text_size(c).width
    bitmap = RPG::Cache.icon($data_armors[a_sub].icon_name)
    self.contents.blt(x+4, y * 32+ 4, bitmap, Rect.new(0, 0, 24, 24))
    x += 28
    self.contents.draw_text(x+4, 32 * y, l+32, lineheight, c)
    x = x + l
    next
    end
    if c == "\016"
    text.sub!(/\[([0-9]+)\]/, "")
    @op = $1.to_i
    next
    end
    if c == "\017"
    bannerflag = true
    next
    end
    if c == "\018"
    text.sub!(/\[([0-9]+)\]/, "")
    jump = $1.to_i
    x += jump
    next
    end
    if c == "\021"
    text.sub!(/\[([0-9]+)\]/, "")
    lineheight = $1.to_i
    next
    end
    if c == "\022"
    text.sub!(/\[([0-9]+)\]/, "")
    skill_sub = $1.to_i
    c = $data_skills[skill_sub].name
    l = self.contents.text_size(c).width
    bitmap = RPG::Cache.icon($data_skills[skill_sub].icon_name)
    self.contents.blt(x+4, y * 32+ 4, bitmap, Rect.new(0, 0, 24, 24))
    x += 28
    self.contents.draw_text(x+4, 32 * y, l+32, lineheight, c)
    x = x + l
    next
    end
    if c == "\023"
    text.sub!(/\[([0-9]+)\]/, "")
    bigness = $1.to_i
    self.contents.font.size = bigness
    next
    end
    if c == "\n"
    if centerflag == true
    x = 448 - x
    x = x / 2
    self.contents.draw_text(x, 32 * y, 448-x, lineheight, a)
    end
    if rightflag == true
    x = 448 - x
    self.contents.draw_text(x, 32 * y, 448-x, lineheight, a)
    end
    if bannerflag == true
    x = 448 - x
    x = x / 2
    self.contents.draw_text(x, 44, 448-x, lineheight, a)
    end
    a = ""
    centerflag = false
    rightflag = false
    bannerflag = false
    if y >= $game_temp.choice_start
    @cursor_width = [@cursor_width, x].max
    end
    y += 1
    x = 0
    if y >= $game_temp.choice_start
    x = 8
    end
    next
    end
    # ***ccoa***
    #display face?
    if $face_showing != nil
    #draw the face, then add the text to one side of it
    @face.bitmap = RPG::Cache.picture($face_showing)
    @face.x = self.x
    @face.y = self.y
    @face.z = 9999
    @face.opacity = 255
    @face.visible = true
    if centerflag == false && rightflag == false && bannerflag == false
    self.contents.draw_text((@face.x * 2) + x, 32 * y, 40, lineheight, c)
    x += self.contents.text_size(c).width
    else
    a += c
    x += self.contents.text_size(c).width
    end
    else
    # just put in the text
    if centerflag == false && rightflag == false && bannerflag == false
    self.contents.draw_text(4 + x, 32 * y, 40, lineheight, c)
    x += self.contents.text_size(c).width
    else
    a += c
    x += self.contents.text_size(c).width
    end
    end
    end
    end
    if $game_temp.choice_max > 0
    @item_max = $game_temp.choice_max
    self.active = true
    self.index = 0
    end
    if $game_temp.num_input_variable_id > 0
    digits_max = $game_temp.num_input_digits_max
    number = $game_variables[$game_temp.num_input_variable_ id]
    @input_number_window = Window_InputNumber.new(digits_max)
    @input_number_window.number = number
    @input_number_window.x = self.x + 8
    @input_number_window.y = self.y + $game_temp.num_input_start * 32
    end
    end
    #-------------------------------
    # Reset the window in response to changes in the position or
    # transparency
    #-------------------------------
    def reset_window
    if $game_temp.in_battle
    self.y = 16
    else
    case $game_system.message_position
    when 0
    self.y = 16
    when 1
    self.y = 160
    when 2
    self.y = 304
    end
    end
    if $game_system.message_frame == 0
    self.opacity = 255
    else
    self.opacity = 0
    end
    self.back_opacity = 160
    end
    #-------------------------------
    # Frame Update
    #-------------------------------
    def update
    super
    if @refreshflag && @fade_in == false
    self.contents_opacity = @op
    end
    if @autoclosetime == 0
    @autoclosetime = -1
    terminate_message
    end
    if @autoclosetime >= 1
    @autoclosetime -= 1
    end
    if @fade_in
    self.contents_opacity += 24
    if @input_number_window != nil
    @input_number_window.contents_opacity += 24
    end
    if self.contents_opacity >= @op
    @fade_in = false
    end
    return
    end
    if @input_number_window != nil
    @input_number_window.update
    # ??
    if Input.trigger?(Input::C)
    $game_system.se_play($data_system.decision_se )
    $game_variables[$game_temp.num_input_variable_id] =
    @input_number_window.number
    $game_map.need_refresh = true
    @input_number_window.dispose
    @input_number_window = nil
    terminate_message
    end
    return
    end
    if @contents_showing
    if $game_temp.choice_max == 0
    self.pause = true
    end
    if Input.trigger?(Input::B)
    if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
    $game_system.se_play($data_system.cancel_se)
    $game_temp.choice_proc.call($game_temp.choice_can cel_type - 1)
    terminate_message
    end
    end
    if Input.trigger?(Input::C)
    if $game_temp.choice_max > 0
    $game_system.se_play($data_system.decision_se )
    $game_temp.choice_proc.call(self.index)
    end
    @op = 255
    terminate_message
    end
    return
    end
    if @fade_out == false and $game_temp.message_text != nil
    @contents_showing = true
    $game_temp.message_window_showing = true
    reset_window
    refresh
    Graphics.frame_reset
    self.visible = true
    self.contents_opacity = 0
    if @input_number_window != nil
    @input_number_window.contents_opacity = 0
    end
    @fade_in = true
    return
    end
    if self.visible
    @fade_out = true
    self.opacity -= 48
    if self.opacity == 0
    self.visible = false
    @fade_out = false
    $game_temp.message_window_showing = false
    end
    return
    end
    end
    #-------------------------------
    # Updates the cursor rectangle.
    #-------------------------------
    def update_cursor_rect
    if @index >= 0
    n = $game_temp.choice_start + @index
    # ***ccoa***
    # make sure the cursor appears in the correct spot for choice messages
    if $face_showing != nil
    self.cursor_rect.set(8, n * 32, @cursor_width, 32)
    else
    self.cursor_rect.empty
    end
    end
    end
    end
    Example




    Now to create an event. For people who don't know how go to the below image. Now click on call script which is on the last page. Input this:

    $face_showing = "IMAGE NAME"
    Here's an example of what the event box will look like:
    Example



    NOTE: $face_showing = "IMAGE NAME"
    where it says IMAGE NAME you have to replace it with the image name. Also make sure the image is in the pictures folder. If you need any help please post.
     
    Last edited:
    208
    Posts
    19
    Years
  • this whole script doesn't work...
    i get an error:
    ____'Window Command'_20__Type Error_____
    no implict conversion from nil to interger
     
    Last edited:
    Back
    Top