MOG Scene Name Iris V1.3

7 de agosto de 2014

MOG Scene Name Iris é um script de Scene Name com movimentos e layout em pictures, desenvolvido pelo Moghunter, para ser usado no RPG Maker XP.

O script é de simples instalação e só precisa de inseri-lo, junto com umas pictures na pasta do projeto.

Screenshot

MOG Scene Name Iris

Instalação

Adicione o script acima do Main. Dê uma olhada na demo para ver direitinho como que faz e pegar as imagens que precisa, etc.

#_______________________________________________________________________________
# MOG_Scene_Name V1.3           
#_______________________________________________________________________________
# By Moghunter     
# http://www.atelier-rgss.com
#_______________________________________________________________________________
# Scene Name com layout e movimento.
# (Crie seu próprio estilo.)
#_______________________________________________________________________________
module MOG
  # Tempo de transição.
  MSNTT1 = 30
  # Definição do tipo de transição.
  MSNTT2 = "004-Blind04"
end

#===============================================================================
# Window_Base
#===============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# draw_battler
#--------------------------------------------------------------------------  
  def draw_battler(actor,x,y)
    battler = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
    cw = battler.width 
    ch = battler.height 
    src_rect = Rect.new(0, 0, cw, ch)
    self.contents.blt(x , y - ch, battler, src_rect)    
  end 
#--------------------------------------------------------------------------
# draw_actor_level_name
#--------------------------------------------------------------------------  
  def draw_actor_level_name(actor, x, y)
    self.contents.font.color = normal_color
    self.contents.draw_text(x , y, 24, 32, actor.level.to_s, 1)
  end
#--------------------------------------------------------------------------
# draw_actor_class
#--------------------------------------------------------------------------  
  def draw_actor_class_name(actor, x, y)
    self.contents.font.color = normal_color
    self.contents.draw_text(x, y, 120, 32, actor.class_name,1)
  end
#--------------------------------------------------------------------------
# draw_actr_name
#--------------------------------------------------------------------------  
  def draw_actr_name(actor, x, y)
    self.contents.font.color = normal_color
    self.contents.draw_text(x, y, 120, 32, actor.name,1)
  end
end

#===============================================================================
# Window_Status_Name
#===============================================================================
class Window_Status_Name < Window_Base
#--------------------------------------------------------------------------
# initialize
#--------------------------------------------------------------------------    
  def initialize(actor)
    super(0, 0, 320, 480)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = "Georgia"
    @actor = actor
    self.opacity = 0
    refresh
  end
#--------------------------------------------------------------------------
# refresh
#--------------------------------------------------------------------------  
  def refresh
    self.contents.clear
    draw_actor_graphic(@actor, 50, 110)
    draw_actor_class_name(@actor, 55, 395)
    draw_actor_level_name(@actor, 20, 120)
    draw_battler(@actor, 20, 350)
  end
end

#===============================================================================
# Window_NameEdit2
#===============================================================================
class Window_NameEdit2 < Window_Base
  attr_reader   :name                   
  attr_reader   :index           
#--------------------------------------------------------------------------
# Initialize
#--------------------------------------------------------------------------  
  def initialize(actor, max_char)
    super(0, 25, 640, 128)
    self.contents = Bitmap.new(width - 32, height - 32)
    @actor = actor
    @name = actor.name
    @max_char = max_char
    name_array = @name.split(//)[0...@max_char]
    @name = ""
    for i in 0...name_array.size
      @name += name_array[i]
    end
    @default_name = @name
    @index = name_array.size
    refresh
    update_cursor_rect
  end
#--------------------------------------------------------------------------
# restore_default
#--------------------------------------------------------------------------  
  def restore_default
    @name = @default_name
    @index = @name.split(//).size
    refresh
    update_cursor_rect
  end
#--------------------------------------------------------------------------
# add
#--------------------------------------------------------------------------  
  def add(character)
    if @index < @max_char and character != ""
      @name += character
      @index += 1
      refresh
      update_cursor_rect
    end
  end
#--------------------------------------------------------------------------
# back
#--------------------------------------------------------------------------  
  def back
    if @index > 0
      name_array = @name.split(//)
      @name = ""
      for i in 0...name_array.size-1
        @name += name_array[i]
      end
      @index -= 1
      refresh
      update_cursor_rect
    end
  end
#--------------------------------------------------------------------------
# refresh
#--------------------------------------------------------------------------  
  def refresh
    self.contents.clear
    name_array = @name.split(//)
    for i in 0...@max_char
      c = name_array[i]
      if c == nil
        c = "_"
      end
      x = 320 - @max_char * 14 + i * 28
      self.contents.draw_text(x + 32, 64, 28, 32, c, 1)
    end
    draw_actr_name(@actor, 295, 20)
  end
#--------------------------------------------------------------------------
# update_cursor_rect
#--------------------------------------------------------------------------  
  def update_cursor_rect
    x = 320 - @max_char * 14 + @index * 28
    self.cursor_rect.set(x + 32, 64, 28, 32)
  end
#--------------------------------------------------------------------------
# update
#--------------------------------------------------------------------------  
  def update
    super
    update_cursor_rect
  end
end

#===============================================================================
# Window_NameInput2
#===============================================================================
class Window_NameInput2 < Window_Base
CHARACTER_TABLE =
[
"A","B","C","D","E",
"F","G","H","I","J",
"K","L","M","N","O",
"P","Q","R","S","T",
"U","V","W","X","Y",
"Z",""," "," "," ",
"+","-","*","/","!",
"1","2","3","4","5",
"" ,"" ,"" ,"" ,"" ,
"a","b","c","d","e",
"f","g","h","i","j",
"k","l","m","n","o",
"p","q","r","s","t",
"u","v","w","x","y",
"z"," "," "," "," ",
"#","$","%","&","@",
"6","7","8","9","0",
"" ,"" ,"" ,"" ,"" ,
]

#--------------------------------------------------------------------------
# Initialize
#--------------------------------------------------------------------------  
  def initialize
    super(64, 140, 640, 352)
    self.contents = Bitmap.new(width - 32, height - 32)
    @index = 0
    refresh
    update_cursor_rect
  end
  
#--------------------------------------------------------------------------
# character
#--------------------------------------------------------------------------  
  def character
    return CHARACTER_TABLE[@index]
  end

#--------------------------------------------------------------------------
# refresh
#--------------------------------------------------------------------------  
  def refresh
    self.contents.clear
    for i in 0...90
    x = 140 + i / 5 / 9 * 180 + i % 5 * 32
    y = i / 5 % 9 * 32
    self.contents.draw_text(x, y, 32, 32, CHARACTER_TABLE[i], 1)
    end
    self.contents.draw_text(428, 9 * 32, 48, 32, "OK", 1)
  end
#--------------------------------------------------------------------------
# update_cursor_rect
#--------------------------------------------------------------------------  
  def update_cursor_rect
    if @index >= 90
      self.cursor_rect.set(428, 9 * 32, 48, 32)
    else
      x = 140 + @index / 5 / 9 * 180 + @index % 5 * 32
      y = @index / 5 % 9 * 32
      self.cursor_rect.set(x, y, 32, 32)
    end
  end
#--------------------------------------------------------------------------
# update
#--------------------------------------------------------------------------  
def update
super
  if @index >= 90
      if Input.trigger?(Input::DOWN)
        $game_system.se_play($data_system.cursor_se)
        @index -= 90
      end
      if Input.repeat?(Input::UP)
        $game_system.se_play($data_system.cursor_se)
        @index -= 90 - 40
      end
    else
    if Input.repeat?(Input::RIGHT)
      if Input.trigger?(Input::RIGHT) or
        @index / 45 < 3 or @index % 5 < 4
        $game_system.se_play($data_system.cursor_se)
        if @index % 5 < 4
          @index += 1
        else
          @index += 45 - 4
        end
        if @index >= 90
          @index -= 90
        end
      end
    end
    if Input.repeat?(Input::LEFT)
      if Input.trigger?(Input::LEFT) or
        @index / 45 > 0 or @index % 5 > 0
        $game_system.se_play($data_system.cursor_se)
      if @index % 5 > 0
        @index -= 1
      else
        @index -= 45 - 4
      end
      if @index < 0
        @index += 90
      end
    end
  end
  if Input.repeat?(Input::DOWN)
    $game_system.se_play($data_system.cursor_se)
    if @index % 45 < 40
      @index += 5
    else
      @index += 90 - 40
    end
  end
  if Input.repeat?(Input::UP)
    if Input.trigger?(Input::UP) or @index % 45 >= 5
      $game_system.se_play($data_system.cursor_se)
      if @index % 45 >= 5
        @index -= 5
      else
        @index += 90
      end
    end
  end
  if Input.repeat?(Input::L) or Input.repeat?(Input::R)
    $game_system.se_play($data_system.cursor_se)
    if @index < 45
      @index += 45
    else
      @index -= 45
    end
    end
  end
  update_cursor_rect
 end
end

#===============================================================================
# Scene_Name
#===============================================================================
class Scene_Name
#--------------------------------------------------------------------------
# Main
#--------------------------------------------------------------------------    
  def main
    @actor = $game_actors[$game_temp.name_actor_id]
    @edit_window = Window_NameEdit2.new(@actor, $game_temp.name_max_char)
    @edit_window.opacity = 0
    @input_window = Window_NameInput2.new
    @input_window.opacity = 0
    @name_back = Plane.new
    @name_back.bitmap = RPG::Cache.picture("MN_BK")
    @name_back.z = 10
    @name_back.opacity = 255
    @name_lay = Plane.new
    @name_lay.bitmap = RPG::Cache.picture("Name_Lay")
    @name_lay.z = 15
    @name_lay.opacity = 255
    @name_status_window = Window_Status_Name.new(@actor)
    @name_status_window.x -= 300
    @name_status_window.contents_opacity = 0
    Graphics.transition(MOG::MSNTT1, "Graphics/Transitions/" + MOG::MSNTT2)
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @edit_window.dispose
    @input_window.dispose
    @name_back.dispose
    @name_lay.dispose
    @name_status_window.dispose
  end
#--------------------------------------------------------------------------
# Update
#--------------------------------------------------------------------------    
  def update
    @name_back.ox += 1 
    if @name_status_window.x < 0
      @name_status_window.x += 15
      @name_status_window.contents_opacity += 5
    elsif @name_status_window.x >= 0
      @name_status_window.x = 0
      @name_status_window.contents_opacity = 255
    end
    @edit_window.update
    @input_window.update
    if Input.repeat?(Input::B)
      if @edit_window.index == 0
        return
      end
      $game_system.se_play($data_system.cancel_se)
      @edit_window.back
      return
    end
    if Input.trigger?(Input::C)
      if @input_window.character == nil
        if @edit_window.name == ""
          @edit_window.restore_default
          if @edit_window.name == ""
            $game_system.se_play($data_system.buzzer_se)
            return
          end
          $game_system.se_play($data_system.decision_se)
          return
        end
        @actor.name = @edit_window.name
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Map.new
        return
      end
      if @edit_window.index == $game_temp.name_max_char
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      if @input_window.character == ""
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      @edit_window.add(@input_window.character)
      return
    end
  end
end


$mog_rgss_Scene_Name = true

Download e ficha técnica

  • Download (clique com o botão esquerdo do mouse ou toque no link).
  • Desenvolvedor, publisher e/ou distribuidor: Moghunter
  • SO: Windows 98/98SE/Me/2000/XP/Vista/7
  • Tamanho: 224KB
  • Licença: Grátis
  • Categoria: Programação XP
  • Tag: RPG Maker XP
  • Adicionado por: LichKing
  • Acessos: 37

Observação: se você gostou deste post ou ele lhe foi útil de alguma forma, por favor considere apoiar financeiramente a Gaming Room. Fico feliz só de ajudar, mas a contribuição do visitante é muito importante para que este site continua existindo e para que eu possa continuar provendo este tipo de conteúdo e melhorar cada vez mais. Acesse aqui e saiba como. Obrigado!

Deixe um comentário

Inscreva-se na nossa newsletter!