Main Menu
  • Welcome to The RPG Maker Resource Kit.

[RESOLVED]Need noobhelp

Started by Mortar, January 28, 2007, 10:11:53 AM

0 Members and 1 Guest are viewing this topic.

Mortar

Err, I'm a complete noob, lol.

Well, I want to use the code below.

But I don't know where to put it  :=:

Can anyone help me out?

#==============================================================================
# ** Letter by Letter Message Window
#------------------------------------------------------------------------------
# Slipknot (dubealex.com/asylum)
# Version 1.11
# September 8, 2006
#------------------------------------------------------------------------------
# Thanks to:
#  - Dubealex, for some of the features.
#  - RPG Advocate, for the hexadecimal color.
#==============================================================================

#------------------------------------------------------------------------------
# SDK log
#------------------------------------------------------------------------------
SDK.log('Letter by Letter Message Window', 'Slipknot', '1.11', '08.09.06')

#------------------------------------------------------------------------------
# Begin SDK Enabled Check
#------------------------------------------------------------------------------
if SDK.state('Letter by Letter Message Window')

# Loads the maps' names
$data_map_infos = load_data('Data/MapInfos.rxdata')

#==============================================================================
# ** Game_Message
#------------------------------------------------------------------------------
#  This class handles the message data
#==============================================================================

class Game_Message
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :letter_by_letter, :speed, :can_skip, :height, :font,
   :sound_enable, :sound, :path, :face_rect, :fit, :skin, :nb_skin,
   :nbyo, :opacity, :shadow, :outline, :pause, :autoclose_frames
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
   # Letter by letter mode
   @letter_by_letter = true
   # Lettter by letter mode's speed
   @speed = 3
   # If this option is false, the player can't skip the message
   @can_skip = true
   # Height of each line, used within the fit or above event options
   @height = 32
   # Always resize the message
   @fit = false
   # Font for the mesage text
   @font = Font.default_name
   # Sound enable
   @sound_enable = false
   # Sound for letter by letter, ['filename', vol]
   @sound = ['032-Switch01', 80]
   # Folder for the message pictures
   @path = 'Graphics/Pictures/'
   # Face rect (only the last two numbers are used)
   @face_rect = Rect.new(0, 0, 96, 96)
   # Skin for the message window, nil = default
   @skin = nil
   # Skin for the name box, nil = default
   @nb_skin = nil
   # Name box y offset
   @nbyo = 20
   # Message window's opacity
   @opacity = 160
   # Outline text
   @outline = false
   # Shadow text
   @shadow = false
   # Show or not the pause graphic
   @pause = true
   # Frames before the message autoclose
   @autoclose_frames = 8
  end
end

#==============================================================================
# ** Game_System
#------------------------------------------------------------------------------
#  Adds Game Message
#==============================================================================

class Game_System
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader :message
  #--------------------------------------------------------------------------
  # * Alias Listing
  #--------------------------------------------------------------------------
  alias slipknot_lblms_initialize initialize
  #--------------------------------------------------------------------------
  # * Load Database
  #--------------------------------------------------------------------------
  def initialize
   slipknot_lblms_initialize
   @message = Game_Message.new
  end
end

#==============================================================================
# ** Game_Event
#------------------------------------------------------------------------------
#  Adds a reader to the Event Name
#==============================================================================

class Game_Event < Game_Character
  #--------------------------------------------------------------------------
  # * Name
  #--------------------------------------------------------------------------
  def name
   @event.name
  end
end

#==============================================================================
# ** Spriteset_Map
#------------------------------------------------------------------------------
#  Adds a reader to the Character Sprites
#==============================================================================

class Spriteset_Map
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader :character_sprites
end

#==============================================================================
# ** Window_Message
#------------------------------------------------------------------------------
#  Rewrites Window_Message
#==============================================================================

class Window_Message < Window_Selectable
  #--------------------------------------------------------------------------
  # * Alias Listing
  #--------------------------------------------------------------------------
  alias slipknot_lblms_initialize initialize
  alias slipknot_lblms_terminatemessage terminate_message
  #--------------------------------------------------------------------------
  # * Initialize
  #--------------------------------------------------------------------------
  def initialize
   slipknot_lblms_initialize
   @autoclose = -1
  end
  #--------------------------------------------------------------------------
  # * Terminate Message
  #--------------------------------------------------------------------------
  def terminate_message
   slipknot_lblms_terminatemessage
   [@name_box, @picture].each do |x|
     x.dispose if x && ! x.disposed?
   end
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
   self.opacity = $game_system.message_frame == 0 ? 255 : 0
   self.back_opacity = system.opacity
   unless system.fit
     self.width, self.height = 480, 160
     skin = system.skin ? system.skin : $game_system.windowskin_name
     self.windowskin = RPG::Cache.windowskin(skin)
     self.contents = Bitmap.new(448, 128)
   else
     contents.clear
     contents.font.color = normal_color
     contents.font.size = Font.default_size
   end
   contents.font.name = system.font
   @x = @y = @wait_count = indent = 0
   @fit_size, @sound = false, system.sound_enable
   @start_x = 4
   @cursor_width = [0, 0, 0, 0]
   @x = 8 if $game_temp.choice_start == 0
   return if ! (@text = $game_temp.message_text)
   @text.gsub!(/\\\\/) { "\000" }
   @text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
   @text.gsub!('\$') { $game_party.gold.to_s }
   @text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
     $game_actors[$1.to_i] ? $game_actors[$1.to_i].name : ''
   end
   @text.gsub!(/\\[Nn][Pp]\[([\d+])\]/) do
     $game_party.actors[$1.to_i] ? $game_party.actors[$1.to_i].name : ''
   end
   @text.gsub!(/\\[Cc]lass\[(\d+)\]/) do
     $game_actors[$1.to_i] ? $game_actors[$1.to_i].class_name : ''
   end
   @text.gsub!(/\\[Mm]ap/) { $data_map_infos[$game_map.map_id].name }
   gold_set = @text.gsub!(/\\[Gg]/, '')
   if @text[/\\[Nn]ame/]
     if @text.sub!(/\\[Nn]ame\[(.*?)\]/, '')
      name_text = $1
     elsif @text.sub!(/\\[Nn]ame/, '')
      name_text = $game_map.events[$game_system.map_interpreter.event_id].name
     end
   end
   if @text[/\\[Ff]ace/]
     # Left
     if @text.sub!(/\\[Ff]ace{(.+?)}/, '')
      face, face_name = 1, $1
     # Right
     elsif @text.sub!(/\\[Ff]ace\[(.+?)\]/, '')
      face, face_name = 2, $1
     end
   end
   picture = $1 if @text.sub!(/\\[Pp]ic\[(.+?)\]/, '')
   if @text[/\\[Pp]/]
     if @text.sub!(/\\[Pp]\[([-1,0-9]+)\]/, '')
      event = $1.to_i
     elsif @text.gsub!(/\\[Pp]/, '')
      event = $game_system.map_interpreter.event_id
     end
   end
   @text.gsub!('\$') { $game_party.gold.to_s }
   @text.gsub!(/\\[Cc]\[([0-9A-Fa-f #]+?)\]/) { "\001[#$1]" }
   @text.gsub!(/\\[Cc]/) { "\001[0]" }
   @text.gsub!(/\\[Ii]con{([IiWwAaSs])}\[(\d+)\]/) { change_icon($1, $2.to_i) }
   @text.gsub!(/\\[Ii]con\[(.*?)\]/) { "\002[#$1]" }
   @text.gsub!('\!') { "\003" }
   @text.gsub!('\.') { "\004" }
   @text.gsub!(/\\[Ss]\[([Xx\d]+)\]/) { "\005[#$1]" }
   @text.gsub!(/\\[Bb]/) { "\006" }
   @text.gsub!(/\\[Ii]/) { "\007" }
   @text.gsub!(/\\[Ff]\[(.*?)\]/) { "\010[#$1]" }
   @text.gsub!(/\\\%\[(\d+)\]/) { "\011[#$1]" }
   @text.gsub!('\%') { "\011" }
   if @fit_size = (event || system.fit)
     lines_size = [0, 0, 0, 0]
     save, lines = @text.clone, 0
     while (c = @text.slice!(/./m))
      if c == "\n"
        lines += 1
        break if lines == 4
        if lines >= $game_temp.choice_start
         lines_size[lines] += 16
        end
        next
      end
      lines_size[lines] += eval_text(c, true)
     end
   end
   if face
     if @fit_size
      mh = system.height
      fh = system.face_rect.height
      lines = (fh.to_f / mh.to_f).ceil if (lines * mh) < fh
      f_x = face == 2 ? 0 : lines_size.max + 16
      f_y = (lines * mh) <= fh ? 0 : (lines * mh - fh) / 2
      @start_x += system.face_rect.width + 4 if face == 2
      indent += system.face_rect.width + 8
     else
      f_x, f_y = face == 2 ? 16 : 336, 16
      @start_x += system.face_rect.width + 36 if face == 2
     end
     f_bitmap = RPG::Cache.load_bitmap(system.path, face_name)
   end
   if @fit_size
     @text = save
     self.height = lines * system.height + 32
     self.height += 32 if $game_temp.num_input_variable_id > 0
     self.width = lines_size.max + indent + 40
     windowskin = system.skin ? system.skin : $game_system.windowskin_name
     self.windowskin = RPG::Cache.windowskin(windowskin)
     self.contents = Bitmap.new(self.width - 32, self.height - 32)
     contents.font.name = system.font
   end
   contents.blt(f_x, f_y, f_bitmap, system.face_rect) if face
   if ! event
     h2 = self.height / 2
     self.y = $game_temp.in_battle ? 96 - h2 + system.nbyo :
      case $game_system.message_position
      when 0 then 96 - h2 + system.nbyo
      when 1 then 240 - h2
      when 2 then 384 - h2
      end
     self.x = 320 - self.width / 2
   else
     c = event > 0 ? $game_map.events[event] : $game_player
     mx, my = 636 - self.width, 476 - self.height
     fx = [[c.screen_x - self.width / 2, 4].max, mx].min
     sy = name_text ? system.nbyo + 4 : 4
     ch = [$scene.spriteset.character_sprites[event - 1].bitmap.height /
      4 + 4, 48].max
     fy = [[c.screen_y - (ch + self.height), sy].max, my].min
     self.x, self.y = fx, fy
   end
   if name_text
     @name_box = Window_NameBox.new(x, y - system.nbyo, name_text)
     @name_box.back.opacity = 0 if $game_system.message_frame == 1
   end
   if picture
     @picture = Sprite.new
     @picture.bitmap = RPG::Cache.load_bitmap(system.path, picture)
     @picture.x = self.x + self.width - @picture.bitmap.width
     @picture.y = self.y - @picture.bitmap.height
   end
   if gold_set
     @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
  end
  #--------------------------------------------------------------------------
  # * Evaluate Text
  #--------------------------------------------------------------------------
  def eval_text(c, read = false)
   case c
   when "\000"
     c = '\\'
   when "\001"
     @text.sub!(/\[(.*?)\]/, '')
     return 0 if read
     h, c = $1, $1.to_i
     contents.font.color = h.slice!(/./) == '#' ? hex_color(h) : text_color(c)
     return
   when "\002"
     @text.sub!(/\[(.*?)\]/, '')
     return 24 if read
     y = @fit_size ? system.height * @y + (system.height - 24) / 2 : 32 * @y + 4
     contents.blt(@x + @start_x, y, RPG::Cache.icon($1.to_s), Rect.new(0, 0, 24, 24))
     @x += 24
     return unless @y >= $game_temp.choice_start
     @cursor_width[@y] += 24
     return
   when "\003"
     return 0 if read
     @stop = true
     return
   when "\004"
     return 0 if read
     @wait_count += 10
     return
   when "\005"
     @text.sub!(/\[([x\d]+)\]/, '')
     if $1.downcase == 'x'
      contents.font.size = Font.default_size
     else
      contents.font.size = [[$1.to_i, 6].max, system.height].min
     end
     return 0
   when "\006"
     contents.font.bold = (! contents.font.bold)
     return 0
   when "\007"
     contents.font.italic = (! contents.font.italic)
     return 0
   when "\010"
     @text.sub!(/\[(.*?)\]/, '')
     if $1.downcase == 'x'
      contents.font.name = system.font
     else
      contents.font.name = [$1.to_s, system.font]
     end
     return 0
   when "\011"
     @text.sub!(/\[(\d+)\]/, '')
     return 0 if read
     @autoclose = $1 ? $1.to_i : system.autoclose_frames
     return
   when "\n"
     @y += 1
     @x = 0
     @x = 8 if @y >= $game_temp.choice_start
     return
   end
   w = contents.text_size(c).width
   return w if read
   y = @fit_size ? system.height * @y : 32 * @y
   if system.outline
     color = contents.font.color.dup
     contents.font.color.set(0, 0, 0, 255)
     contents.draw_text(@x + @start_x + 1, y, w * 2, system.height, c)
     contents.draw_text(@x + @start_x, y + 1, w * 2, system.height, c)
     contents.draw_text(@x + @start_x - 1, y, w * 2, system.height, c)
     contents.draw_text(@x + @start_x, y - 1, w * 2, system.height, c)
     contents.font.color = color
     contents.draw_text(@x + @start_x, y, w * 2, system.height, c)
   elsif system.shadow
     color = contents.font.color.dup
     contents.font.color.set(0, 0, 0, 192)
     contents.draw_text(@x + @start_x + 2, y + 2, w * 2, system.height, c)
     contents.font.color = color
     contents.draw_text(@x + @start_x, y, w * 2, system.height, c)
   else
     contents.draw_text(@x + @start_x, y, w * 2, system.height, c)
   end
   @sound = (system.sound_enable && c != ' ')
   @x += w
   return if @y < $game_temp.choice_start || @y > 3
   @cursor_width[@y] += w
  end
  #--------------------------------------------------------------------------
  # * Finish
  #--------------------------------------------------------------------------
  def finish
   if temp.choice_max > 0
     @item_max, self.active, self.index = temp.choice_max, true, 0
   end
   if temp.num_input_variable_id > 0
     digits_max = temp.num_input_digits_max
     number = $game_variables[temp.num_input_variable_id]
     @input_number_window = Window_InputNumber.new(digits_max)
     input_number.number = number
     input_number.x = x + 8
     input_number.y = y + temp.num_input_start * (@fit_size ? system.height : 32)
   end
  end
  #--------------------------------------------------------------------------
  # * Database Icon
  #--------------------------------------------------------------------------
  def change_icon(option, index)
   s = case option.downcase
     when 'i'  then $data_items[index]
     when 'w' then $data_weapons[index]
     when 'a'  then $data_armors[index]
     when 's'  then $data_skills[index]
     end
   return sprintf("\002[%s]%s", s.icon_name, s.name) if s.name
  end
  #--------------------------------------------------------------------------
  # * Hexadecimal Color
  #--------------------------------------------------------------------------
  def hex_color(string)
   return normal_color if string.size != 6
   r = g = b = 0
   5.times do |i|
     s = string.slice!(/./m)
     v = hex_convert(s.downcase)
     case i
     when 0 then r += v * 16
     when 1 then r += v
     when 2 then g += v * 16
     when 3 then g += v
     when 4 then b += v * 16
     when 5 then b += v
     end
   end
   return Color.new(r, g, b)
  end
  #--------------------------------------------------------------------------
  def hex_convert(c)
   return c.to_i if c[/[0-9]/]
   case c
   when 'a' then 10
   when 'b' then 11
   when 'c' then 12
   when 'd' then 13
   when 'e' then 14
   when 'f' then 15
   end
  end
  #--------------------------------------------------------------------------
  # * Game Message
  #--------------------------------------------------------------------------
  def system() $game_system.message end
  #--------------------------------------------------------------------------
  # * Game Temp
  #--------------------------------------------------------------------------
  def temp() $game_temp end
  #--------------------------------------------------------------------------
  # * Input Number Window
  #--------------------------------------------------------------------------
  def input_number() @input_number_window end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
   if @contents_showing
     super
     if @fade_in
      self.contents_opacity += 24
      if input_number
        input_number.contents_opacity += 24
      end
      @fade_in = contents_opacity != 255
      return
     end
     if @text
      if Input.trigger?(13)
        if @stop
         self.pause = @stop = false
         return
        end
        @skip = system.can_skip
      end
      return if @stop
      if @wait_count > 0 && ! @skip
        @wait_count -= 1
        return
      end
      loop do
        if (c = @text.slice!(/./m))
         eval_text(c)
         if @stop
           self.pause = system.pause
           return
         end
         if ! @skip && @sound
           Audio.se_play('Audio/SE/' + system.sound[0], system.sound[1])
           @sound = false
         end
         @wait_count += system.speed
        else
         @text = nil
         break
        end
        break if ! @skip
      end
      return if @text || @autoclose != -1
      finish
      return
     else
      if @autoclose > 0
        @autoclose -= 1
        return
      elsif @autoclose == 0
        terminate_message
        @autoclose = -1
        return
      end
     end
   end
   if input_number
     input_number.update
     if Input.trigger?(13)
      $game_system.se_play($data_system.decision_se)
      $game_variables[$game_temp.num_input_variable_id] = input_number.number
      $game_map.need_refresh = true
      input_number.dispose
      @input_number_window = nil
      terminate_message
     end
     return
   end
   if @contents_showing
     self.pause = ($game_temp.choice_max == 0) & system.pause
     if Input.trigger?(12)
      if $game_temp.choice_max > 0 && $game_temp.choice_cancel_type > 0
        $game_system.se_play($data_system.cancel_se)
        $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
        terminate_message
      end
     end
     if Input.trigger?(13)
      if $game_temp.choice_max > 0
        $game_system.se_play($data_system.decision_se)
        $game_temp.choice_proc.call(self.index)
      end
      terminate_message
     end
     return
   end
   if ! @fade_out && $game_temp.message_text
     @contents_showing = temp.message_window_showing = true
     @stop = false
     @autoclose = -1
     @skip = (! system.letter_by_letter)
     reset_window
     refresh
     @wait_count, self.visible = 0, true
     return
   end
   return if ! visible
   @fade_out = true
   self.opacity -= 48
   if self.opacity == 0
     self.visible = @fade_out = false
     $game_temp.message_window_showing = false
   end
  end
  #--------------------------------------------------------------------------
  # * Updates Cursor Rectangle
  #--------------------------------------------------------------------------
  def update_cursor_rect
   if index >= 0
     n = $game_temp.choice_start + @index
     y = (@fit_size ? system.height : 32) * n
     cursor_rect.set(4 + @start_x, y, @cursor_width.max + 8,
      @fit_size ? system.height : 32)
   else
     cursor_rect.empty
   end
  end
end

#==============================================================================
# ** Window_NameBox
#------------------------------------------------------------------------------
#  This window is used to display the box above the message.
#==============================================================================

class Window_NameBox < Sprite
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader :back
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(x, y, text)
   dumb = Bitmap.new(160, 42)
   dumb.font.name = system.font
   size = dumb.text_size(text).width
   dumb.dispose
   @back = Window_Base.new(x, y, size + 12, 32)
   skin = system.nb_skin ? system.nb_skin : $game_system.windowskin_name
   @back.windowskin = RPG::Cache.windowskin(skin)
   viewport = Viewport.new(x + 6, y + 5, size, 22)
   @back.z = viewport.z = 9999
   super(viewport)
   self.bitmap = Bitmap.new(size, 22)
   bitmap.font.name = system.font
   bitmap.draw_text(0, 0, size, 22, text)
  end
  #--------------------------------------------------------------------------
  # * Game Message
  #--------------------------------------------------------------------------
  def system() $game_system.message end
  #--------------------------------------------------------------------------
  # * Dispose
  #--------------------------------------------------------------------------
  def dispose
   @back.dispose
   @back = nil
   super
  end
end

#==============================================================================
# ** Interpreter
#------------------------------------------------------------------------------
#  Adds a reader to the Event ID and Game Message
#==============================================================================

class Interpreter
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader :event_id
  #--------------------------------------------------------------------------
  # * Game Message
  #--------------------------------------------------------------------------
  def message
   $game_system.message
  end
end

#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
#  Adds a reader to the Spriteset
#==============================================================================

class Scene_Map
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader :spriteset
end

#------------------------------------------------------------------------------
# End SDK Enabled Test
#------------------------------------------------------------------------------
end

&&&&&&&&&&&&&

next to the recourse importer, there is the script editor, place it over MAIN by right clicking on main and choosing new.
&&&&&&&&&&&&&&&&

Mortar

Ah, cool, thanks.

But how should I name the script?

Mortar

I keep getting this:

Quote????? 'NAME I ENTER FOR SCRIPT' ? 4 ??? NameError ????????

uninitialized constant SDK

&&&&&&&&&&&&&

&&&&&&&&&&&&&&&&

Mortar

Quote from: Mortar on January 28, 2007, 10:44:57 AM
I keep getting this:

Quote????? 'NAME I ENTER FOR SCRIPT' ? 4 ??? NameError ????????

uninitialized constant SDK

&&&&&&&&&&&&&

Quote from: BanisherOfEden on January 28, 2007, 11:30:58 AM
name it anything...

Ok, this is how it works, if you are doing it correct and the script is not faulty, then you can name it anything.

http://rmrk.net/index.php/topic,263.0.html
&&&&&&&&&&&&&&&&

pliio8

If you don't have the SDK remove this part from the top:

#------------------------------------------------------------------------------
# SDK log
#------------------------------------------------------------------------------
SDK.log('Letter by Letter Message Window', 'Slipknot', '1.11', '08.09.06')

#------------------------------------------------------------------------------
# Begin SDK Enabled Check
#------------------------------------------------------------------------------
if SDK.state('Letter by Letter Message Window')

# Loads the maps' names
$data_map_infos = load_data('Data/MapInfos.rxdata')


Then it should work fine!
Games in progress:
Tome of Arastovia: 7% complete at 2 hours of gametime

Mortar