Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

Scrolling Message System

Status
Not open for further replies.
Scrolling Message System - Version: 1.2


Last Update

May 13, 2007

Introduction

This script makes message show in two lines of text at a time. If there are more than two lines, the lines will be scrolled in a smoothly way. Letters are drawed one by one.

Features
  • Letter by Letter: the characters are drawed one by one.
  • Scrolling: the text lines are scrolled, the time of this can be changed.
  • Stop: the message window can be stopped until the player press a key. \!
  • Autoclose: the message will close without the player input. \%
  • Choices: the choices are showed in a different window, they are also scrolled when are more than two.
  • Height: The heigth of lines can be changed, everything is adjusted to this.
  • Above Events: You can draw the window above an event. \p[event]
Extra Features
  • Name Box: Text is shown in a small window above message \name[text]
    Code:
    #==============================================================
    
    # ** Scrolling Message System / Name Box
    
    #------------------------------------------------------------------------------
    
    # Slipknot (http://www.creationasylum.net/)
    
    # Version 1.1
    
    # March 13, 2007
    
    #==============================================================
    
     
    
    class Window_Message < Window_Selectable
    
      #--------------------------------------------------------------------------
    
      # * Alias Listing
    
      #--------------------------------------------------------------------------
    
      alias slipknot_sms_nb_refresh refresh
    
      alias slipknot_sms_nb_repcod replace_code
    
      alias slipknot_sms_nb_termmes terminate_message
    
      #--------------------------------------------------------------------------
    
      # * Terminate Message
    
      #--------------------------------------------------------------------------
    
      def terminate_message
    
        slipknot_sms_nb_termmes
    
        if @name_box
    
          @name_box.dispose
    
          @name_box = nil
    
        end
    
      end
    
      #--------------------------------------------------------------------------
    
      # * Refresh
    
      #--------------------------------------------------------------------------
    
      def refresh
    
        slipknot_sms_nb_refresh
    
        if @name_text
    
          @name_box = Window_MessageNameBox.new(x, y - 16, @name_text)
    
          @name_box.back.opacity = 0 if $game_system.message_frame == 1
    
          @name_text = nil
    
        end
    
      end
    
      #--------------------------------------------------------------------------
    
      # * Replace Code
    
      #--------------------------------------------------------------------------
    
      def replace_code
    
        slipknot_sms_nb_repcod
    
        @text.gsub!(/\\[Nn]ame\[(.*?)\]/) { @name_text = $1; '' }
    
      end
    
    end
    
     
    
    class Window_MessageNameBox < Window_Base
    
      #--------------------------------------------------------------------------
    
      # * Public Instance Variables
    
      #--------------------------------------------------------------------------
    
      attr_reader :back
    
      #--------------------------------------------------------------------------
    
      # * Object Initialization
    
      #--------------------------------------------------------------------------
    
      def initialize(x, y, text)
    
        dumb = Bitmap.new(160, 32)
    
        dumb.font = Message.font
    
        color = nil
    
        text.sub!(/\\[Cc](\d)/) { color = text_color($1.to_i); '' }
    
        size = dumb.text_size(text).width
    
        dumb.dispose
    
        @back = Window_Base.new(x, y, size + 12, 32)
    
        @back.z = 9998
    
        super(x - 10, y - 11, size + 32, 54)
    
        self.z = 9999
    
        self.opacity = 0
    
        self.contents = Bitmap.new(size, 22)
    
        contents.font = Message.font
    
        contents.font.color = color if color
    
        contents.draw_text(0, 0, size, 22, text)
    
      end
    
      #--------------------------------------------------------------------------
    
      # * Dispose
    
      #--------------------------------------------------------------------------
    
      def dispose
    
        @back.dispose
    
        @back = nil
    
        super
    
      end
    
    end
  • Face: A small graphic is shown inside the message \face[file]
    Code:
    #==============================================================
    
    # ** Scrolling Message System / Face
    
    #------------------------------------------------------------------------------
    
    # Slipknot (http://www.creationasylum.net/)
    
    # Version 1.0
    
    # May 13, 2007
    
    #==============================================================
    
     
    
    class Window_Message < Window_Selectable
    
      #--------------------------------------------------------------------------
    
      # * Alias Listing
    
      #--------------------------------------------------------------------------
    
      alias slipknot_sms_f_refresh refresh
    
      alias slipknot_sms_f_repcod replace_code
    
      alias slipknot_sms_f_termmes terminate_message
    
      #--------------------------------------------------------------------------
    
      # * Refresh
    
      #--------------------------------------------------------------------------
    
      def terminate_message
    
        slipknot_sms_f_termmes
    
        if @face
    
          @face.dispose
    
          @face = nil
    
        end
    
      end
    
      #--------------------------------------------------------------------------
    
      # * Refresh
    
      #--------------------------------------------------------------------------
    
      def refresh
    
        slipknot_sms_f_refresh
    
        if @face_name
    
          @face = Sprite.new
    
          @face.x = self.x + 16
    
          @face.y = self.y + 16
    
          @face.z = self.z + 1
    
          @face.bitmap = RPG::Cache.picture(@face_name)
    
          @face_name = nil
    
        end
    
      end
    
      #--------------------------------------------------------------------------
    
      # * Replace Code
    
      #--------------------------------------------------------------------------
    
      def replace_code
    
        slipknot_sms_f_repcod
    
        @text.sub!(/\\[Ff]ace\[(.*?)\]/) do
    
          @face_name = $1
    
          @ex += Message::Height * 2 + 4
    
          ''
    
        end
    
      end
    
    end
  • Bold: \b
    Italic: \i
    Code:
    #==============================================================
    
    # ** Scrolling Message System / Bold & Italic
    
    #------------------------------------------------------------------------------
    
    # Slipknot (http://www.creationasylum.net/)
    
    # Version 1.0
    
    # May 13, 2007
    
    #==============================================================
    
     
    
    class Window_Message < Window_Selectable
    
      #--------------------------------------------------------------------------
    
      # * Alias Listing
    
      #--------------------------------------------------------------------------
    
      alias slipknot_sms_bi_evalextra eval_extra
    
      alias slipknot_sms_bi_repbcod replace_basic_code
    
      #--------------------------------------------------------------------------
    
      # * Eval Extra
    
      #--------------------------------------------------------------------------
    
      def eval_extra(bitmap)
    
        slipknot_sms_bi_evalextra(bitmap)
    
        if @c == "\005"
    
          bitmap.font.bold = bitmap.font.bold ? false : true
    
          @c = ''
    
        end
    
        if @c == "\006"
    
          bitmap.font.italic = bitmap.font.italic ? false : true
    
          @c = ''
    
        end
    
      end
    
      #--------------------------------------------------------------------------
    
      # * Replace Basic Code
    
      #--------------------------------------------------------------------------
    
      def replace_basic_code
    
        slipknot_sms_bi_repbcod
    
        @text.gsub!('\\b', "\005")
    
        @text.gsub!('\\i', "\006")
    
      end
    
    end
Versions History

Version 1.2 (13/05/07)

- added: Face
- added: Name Box
- added: Bold & Italic
- fixed: Easier to expand the script
- fixed: Small bug when using slow scrolling

Version 1.1 (23/01/07)
- added: Choices supports "message code".
- fixed: Small bug with the scroll arrows

Version 1.0 (15/12/06)
- First release

Screenshots

sms12wi3.gif


Demo

http://www.fileul.com/view.php?file=o2KsIL

Script

Code:
#==============================================================

# ** Scrolling Message System

#------------------------------------------------------------------------------

# Slipknot (http://www.creationasylum.net/)

# Version 1.2

# May 13, 2007

#==============================================================

 

module Message

  #--------------------------------------------------------------------------

  # * Settings

  #--------------------------------------------------------------------------

  # ~ Font

  FontName = 'High Tower Text'

  FontSize = 20

  # ~ Size

  Width = 388

  Height = 24

  # ~ Delay

  TextDelay = 2

  Scroll = 30

  Autoclose = 16

  #--------------------------------------------------------------------------

  # * Font

  #--------------------------------------------------------------------------

  def self.font

    Font.new(FontName, FontSize)

  end

end

 

 

class Game_Temp

  #--------------------------------------------------------------------------

  # * Public Instance Variables

  #--------------------------------------------------------------------------

  attr_accessor :mes_choices

end

 

 

class Spriteset_Map

  #--------------------------------------------------------------------------

  # * Public Instance Variables

  #--------------------------------------------------------------------------

  attr_reader :character_sprites

end

 

 

class Interpreter

  #--------------------------------------------------------------------------

  # * Show Text

  #--------------------------------------------------------------------------

  def command_101

    return false if (temp = $game_temp).message_text

    @message_waiting = true

    temp.message_proc = Proc.new { @message_waiting = false }

    temp.message_text = @list.at(@index).parameters.at(0) + "\n"

    loop do

      com = @list.at(@index + 1)

      if com.code == 401 || com.code == 101

        temp.message_text += com.parameters.at(0) + "\n"

      else

        if com.code == 102

          temp.choice_max = com.parameters.at(0).size

          temp.mes_choices = com.parameters.at(0)

          temp.choice_cancel_type = com.parameters.at(1)

          current_indent = com.indent

          temp.choice_proc = Proc.new { |n| @branch[current_indent] = n }

          @index += 1

        elsif com.code == 103

          @index += 1

          temp.message_text += "\n"

          temp.num_input_variable_id = com.parameters.at(0)

          temp.num_input_digits_max = com.parameters.at(1)

        end

        return true

      end

      @index += 1

    end

  end

end

 

 

class Window_Message < Window_Selectable

  #--------------------------------------------------------------------------

  # * Alias Listing

  #--------------------------------------------------------------------------

  alias slipknot_sms_init initialize

  #--------------------------------------------------------------------------

  # * Initialize

  #--------------------------------------------------------------------------

  def initialize

    slipknot_sms_init

    self.height = Message::Height * 2 + 32

    self.back_opacity = 160

    self.windowskin = windowskin.clone

    self.windowskin.fill_rect(144, 16, 32, 32, Color.new(0, 0, 0, 0))

    @ey = 1.0

    @y = 0

  end

  #--------------------------------------------------------------------------

  # * Opacity

  #--------------------------------------------------------------------------

  def opacity=(val)

    super

    @choices.opacity = val if @choices

  end

  #--------------------------------------------------------------------------

  # * Refresh

  #--------------------------------------------------------------------------

  def refresh

    contents.clear

    contents.font = Message.font

    @x = @y = @ex = @ey = 0

    return if ! (@text = temp.message_text)

    replace_code

    gold_win |= @text.gsub!(/\\[Gg]/, '')

    if fit |= @text[/\\[Pp]/]

      if @text.sub!(/\\[Pp]\[([-1,0-9]+)\]/, '')

        event = $1.to_i

      elsif @text.gsub!(/\\[Pp]/, '')

        event = ev_ac

      end

    end

    lines_size = [0]

    save, @lines = @text.clone, 0

    while @c = @text.slice!(/./m)

      if @c == "\n"

        @lines += 1

        lines_size << 0

        next

      end

      lines_size[@lines] += eval_text(self.contents, true)

    end

    if temp.choice_max > 0

      @c_data = [Bitmap.new(640 - Message::Width, Message::Height *

        temp.choice_max), Array.new(temp.choice_max, 0)]

      @c_data.at(0).font = Message.font

      @text = temp.mes_choices.join("\n")

      replace_basic_code

      @y = 0

      while @c = @text.slice!(/./m)

        @c_data.at(1)[@y] += eval_text(@c_data.at(0))

      end

      @c_data[1] = @c_data.at(1).max + 8

      @x = @y = 0

    end

    @text = save

    twidth = temp.choice_max > 0 ? @c_data.at(1) + 32 : 0

    self.width = fit ? lines_size.max + 40 + @ex : Message::Width - twidth

    twidth += self.width

    self.contents = Bitmap.new(self.width - 32, @lines * Message::Height)

    contents.font = Message.font

    if ! event

      h2 = self.height / 2

      self.y = temp.in_battle ? 96 - h2 :

        case $game_system.message_position

        when 0 then 96 - h2

        when 1 then 240 - h2

        when 2 then 384 - h2

        end

      self.x = 320 - twidth / 2

    else

      c = event > 0 ? $game_map.events[event] : $game_player

      mx, my = 636 - twidth, 476 - self.height

      fx = [[c.screen_x - twidth / 2, 4].max, mx].min

      ch = [$scene.spriteset.character_sprites[event - 1].bitmap.height /

        4 + 4, 48].max

      fy = [[c.screen_y - (ch + self.height), 4].max, my].min

      self.x, self.y = fx, fy

    end

    self.opacity = $game_system.message_frame == 0 ? 255 : 0

    if gold_win

      @gold_window = Window_Gold.new

      @gold_window.x = 560 - @gold_window.width

      if temp.in_battle

        @gold_window.y = 192

      else

        @gold_window.y = self.y >= 128 ? 32 : 384

      end

      @gold_window.opacity = self.opacity

    end

    if temp.choice_max > 0

      @choices = Window_MesChoices.new(self.x + self.width, self.y, @c_data)

      @choices.back_opacity = self.back_opacity

    end

  end

  #--------------------------------------------------------------------------

  # * Replace Code

  #--------------------------------------------------------------------------

  def replace_code

    replace_basic_code

    @text.gsub!('\!') { "\003" }

    @text.gsub!('\.') { "\004" }

    @text.gsub!(/\\\%\[(\d+)\]/) { "\011[#$1]" }

    @text.gsub!('\%') { "\011" }

  end

  def replace_basic_code

    @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!('\$') { $game_party.gold.to_s }

    @text.gsub!(/\\[Cc]\[([0-9]+?)\]/) { "\001[#$1]" }

  end

  #--------------------------------------------------------------------------

  # * Evaluate Text

  #--------------------------------------------------------------------------

  def eval_text(bitmap, read = false)

    case @c

    when "\000"

      @c = '\\'

    when "\001"

      @text.sub!(/\[(\d+)\]/, '')

      return 0 if read

      bitmap.font.color = text_color($1.to_i)

      return 0

    when "\002"

      @text.sub!(/\[(.*?)\]/, '')

      return 24 if read

      y = Message::Height * @y

      bitmap.blt(@ex + @x + 4, y, RPG::Cache.icon($1.to_s), Rect.new(0, 0, 24, 24))

      @x += 24

      return 0

    when "\003"

      return 0 if read

      @stop = true

      return 0

    when "\004"

      return 0 if read

      @wait_count += 10

      return 0

    when "\011"

      @text.sub!(/\[(\d+)\]/, '')

      return 0 if read || temp.num_input_variable_id > 0 || temp.choice_max > 0

      @autoclose = $1 ? $1.to_i : Message::Autoclose

      return 0

    end

    eval_extra(bitmap)

    return 0 if @c == '' || @c == nil

    if @c == "\n"

      @y += 1

      @x = 0

      return 0

    end

    w = bitmap.text_size(@c).width

    unless read

      bitmap.draw_text(@ex + @x + 4, Message::Height * @y, w, Message::Height, @c)

      @x += w

    end

    return w

  end

  def eval_extra(bitmap)

  end

  #--------------------------------------------------------------------------

  # * Variables

  #--------------------------------------------------------------------------

  def temp() $game_temp end

  def input_number() @input_number_window end

  def ev_ac() $game_system.map_interpreter.event_id end

  #--------------------------------------------------------------------------

  # * Frame Update

  #--------------------------------------------------------------------------

  def update

    if @contents_showing

      super

      if self.oy < (@y - 1) * Message::Height && @y < @lines

        @ey += Message::Height / Message::Scroll.to_f

        ey = @ey - @ey.floor

        self.oy += @ey.floor

        @ey = ey

      end

      if @text

        if Input.trigger?(13) && @stop

          self.pause = @stop = false

          return

        elsif @stop

          return

        elsif @wait_count > 0

          @wait_count -= 1

          return

        end

        @wait_count = 0

        return if self.oy < (@y - 1) * Message::Height && @y != @lines

        if (@c = @text.slice!(/./m))

          eval_text(contents)

          if @stop

            self.pause = true

            return

          end

          @wait_count += Input.press?(13) ? 0 : Message::TextDelay

        else

          @text = nil

        end

        return if @text || @autoclose != -1

        if temp.num_input_variable_id > 0

          digits_max = temp.num_input_digits_max

          @input_number_window = Window_InputNumber.new(digits_max)

          input_number.number = $game_variables[temp.num_input_variable_id]

          input_number.x = self.x + (self.width / 2 - input_number.width / 2)

          input_number.y = self.y + Message::Height

          @y -= 1

          @ey -= 1.0

        end

        @choices.index, @choices.active = 0, true if @choices

        return

      else

        if @autoclose > 0

          @autoclose -= 1

          return

        elsif @autoclose == 0

          terminate_message

          @autoclose = -1

          return

        end

      end

      if input_number

        input_number.update

        if Input.trigger?(13)

          $game_system.se_play($data_system.decision_se)

          $game_variables[temp.num_input_variable_id] = input_number.number

          $game_map.need_refresh = true

          input_number.dispose

          @input_number_window = nil

          terminate_message

        end

        return

      elsif @choices

        @choices.update

      end

      self.pause = true

      if Input.trigger?(12)

        if temp.choice_max > 0 && temp.choice_cancel_type > 0

          $game_system.se_play($data_system.cancel_se)

          temp.choice_proc.call(temp.choice_cancel_type - 1)

          terminate_message

        end

      end

      if Input.trigger?(13)

        if temp.choice_max > 0

          $game_system.se_play($data_system.decision_se)

          temp.choice_proc.call(@choices.index)

        end

        terminate_message

      end

      return

    end

    if ! @fade_out && temp.message_text

      @contents_showing = temp.message_window_showing = true

      if @choices

        @choices.dispose

        @choices = nil

      end

      self.oy = 0

      @stop = false

      @autoclose = -1

      refresh

      @wait_count, self.visible = 0.0, true

      return

    end

    return if ! visible

    @fade_out = true

    self.opacity -= 48

    if self.opacity == 0

      self.visible = @fade_out = false

      if @choices

        @choices.dispose

        @choices = nil

      end

      temp.message_window_showing = false

    end

  end

end

 

 

class Window_MesChoices < Window_Selectable

  #--------------------------------------------------------------------------

  # * Initialize

  #--------------------------------------------------------------------------

  def initialize(x, y, data)

    super(x, y, data.at(1) + 32, 2 * (h = Message::Height) + 32)

    self.opacity = $game_system.message_frame == 0 ? 255 : 0

    self.index, self.active, @item_max = -1, false, $game_temp.choice_max

    self.contents = Bitmap.new(data.at(1), @item_max * h)

    contents.blt(0, 0, data.at(0), Rect.new(0, 0, data.at(1), h * @item_max))

  end

  #--------------------------------------------------------------------------

  # * Update Cursor

  #--------------------------------------------------------------------------

  def update_cursor_rect

    if @index < 0

      self.cursor_rect.empty

      return

    end

    self.oy = [[@index, @item_max].min - 1, 0].max * Message::Height

    y = @index * Message::Height - self.oy

    cursor_rect.set(0, y, width - 32, Message::Height)

  end

end

 

 

class Window_InputNumber < Window_Base

  #--------------------------------------------------------------------------

  # * Initialize

  #--------------------------------------------------------------------------

  def initialize(digits)

    @digits_max = digits

    @number = 0

    dummy = Bitmap.new(32, 32)

    dummy.font = Message.font

    @cursor_width = dummy.text_size('0').width + 8

    dummy.dispose

    super(0, 0, @cursor_width * @digits_max + 32, Message::Height + 32)

    self.contents = Bitmap.new(width - 32, height - 32)

    contents.font = Message.font

    self.z += 9999

    self.opacity = @index = 0

    refresh

    update_cursor_rect

  end

  #--------------------------------------------------------------------------

  # * Update Cursor

  #--------------------------------------------------------------------------

  def update_cursor_rect

    cursor_rect.set(@index * @cursor_width, 0, @cursor_width, Message::Height)

  end

  #--------------------------------------------------------------------------

  # * Refresh

  #--------------------------------------------------------------------------

  def refresh

    contents.clear

    contents.font.color = normal_color

    s = sprintf("%0*d", @digits_max, @number)

    for i in 0...@digits_max

      contents.draw_text(i * @cursor_width + 4, 0, 32, Message::Height, s[i, 1])

    end

  end

end

 

 

class Interpreter

  #--------------------------------------------------------------------------

  # * Public Instance Variables

  #--------------------------------------------------------------------------

  attr_reader :event_id

end

 

 

class Scene_Map

  #--------------------------------------------------------------------------

  # * Public Instance Variables

  #--------------------------------------------------------------------------

  attr_reader :spriteset

end

 

Instructions

You need paste the code before Main.
Take a look to the demo and see how it works.
  • FontName: is the font used for the text.
  • FontSize: the size of the text.
  • Width: the width of the message window.
  • Height: the height of each line, the height of the window is Height * 2 + 32.
  • TextDelay: the higher this value is, higher the delay between characters.
  • Scroll: the delay of the "scrolling".
  • Autoclose: the number of frames before close the message when autoclose is used.

Compatibility

This script couldn't work with other message window script.

Author's Notes

Credit me and report bugs!
Thanks to TDS (creation asylum) to test this new version :)
 
Awesome script, love the scrolling.

I would love to use this script in my game, is there any way you could add the name of the character in a separate box at the top left of the message window?

I've seen it done with other message systems.
 
Hairdude;118622 said:
Awesome script, love the scrolling.

I would love to use this script in my game, is there any way you could add the name of the character in a separate box at the top left of the message window?

I've seen it done with other message systems.
Yes, I can add it without problem, but right now I don't have my computer. ':|
 
Slipknot, your using the illegal version of RMXP aren't you? When I tried to run the game, no text was displayed and when i checked your Game.ini, your Library was RGSS100J.dll, when the legal is RGSS102E.dll.
 
This is one great script, man... and not only that, you even made some kind of plugin system, which i like very much, as I don't use all those face displays and name boxes anyway... I think about using the text formating this time, though... well, in any case, I'll definately use this, as this is the step from dubealex's good, but weak coded message system to nice coding and efficiency. You get the full score from me, buddy - excellent work!

Well, there's something I dislike, though: The choice window. It shows up as soon as the message appears, while it shouldn't get shown unless it actually gets active... I think I could easily change this by myself, but it's your script, so you might want to do it by yourself and update the script with it...
 
Thanks :D
about the choices, well... show an empty window will be kinda strange...
but, if someone have suggestions about that, is welcome to post them.

And... my code is nice? I think it looks ugly! :p
 
Well, of course, it's not perfect coding (like the two instances of Interpreter class you have there, and you have weird names like @choices, which should be something like @choices_window), but compared to dubealexes, whos script has about 1100 lines after being shortened by myself, yours is with a few lines above 400 almost a third of the line count...

What I meant with the choices window wasn't to just don't make the choices itself not appear, but show the whole window only if the text aready stopped and you can actually give an input.
Also, another little thing I noticed... if your text isn't long enough for two lines, the text window still seems to contain a second, empty one... I remember that there's an example for that in the demo as well...
And one last thing, kinda vital, though: If you place \p[aInteger] witin a message block, it won't get recognized. You definately should change this ^_^
 
I'm having some trouble getting it to display "choices" correctly...they seem to be drawn waay to the right of where they should be...only the first letter is appearing in the far right of the choices box...any tips?
 
BlueScope;207544 said:
Well, of course, it's not perfect coding (like the two instances of Interpreter class you have there, and you have weird names like @choices, which should be something like @choices_window), but compared to dubealexes, whos script has about 1100 lines after being shortened by myself, yours is with a few lines above 400 almost a third of the line count...
What is the problem with the Interpreter instances?
and @choices is not window, is a variable storing everything about choices


What I meant with the choices window wasn't to just don't make the choices itself not appear, but show the whole window only if the text aready stopped and you can actually give an input.
I don't get it...
So... the choices window will appear after the text is completeley drawn?
That will be very strange, because the window won't be centered until the choices appears O_o


Also, another little thing I noticed... if your text isn't long enough for two lines, the text window still seems to contain a second, empty one... I remember that there's an example for that in the demo as well...
Yeah, I already noticed that, I'll change it for a next version ;)


And one last thing, kinda vital, though: If you place \p[aInteger] witin a message block, it won't get recognized. You definately should change this ^_^
Wrong, see this code, especially second line, and you can also look it in the demo :yes:
Code:
    if fit |= @text[/\\[Pp]/]
      if @text.sub!(/\\[Pp]\[([-1,0-9]+)\]/, '')
        event = $1.to_i
      elsif @text.gsub!(/\\[Pp]/, '')
        event = ev_ac
      end
    end


Yawgmothsbud":ssrqf5v7 said:
I'm having some trouble getting it to display "choices" correctly...they seem to be drawn waay to the right of where they should be...only the first letter is appearing in the far right of the choices box...any tips?
Could you post a screenshot?
 
Slipknot;207432 said:
Code:
\name[\c1Alex]

is not really possible because HeroName1=\c[1]Alex\c[0]

or i need a skipt to make this at the draw_text def.

i have a skipt to show a face with windowskin or background picture or without of them.
flexible size, and you can use the facesets from 2k(3)
possible you can use this.

EDIT:
whould you add some facts from the UMS?
 
Slipknot;207609 said:
What is the problem with the Interpreter instances?
and @choices is not window, is a variable storing everything about choices
For the @choices, I just took a slight glance at it, my bad... and the Interpreter thing: You have these two instances of Interpreter class...
Code:
class Interpreter
  #--------------------------------------------------------------------------
  attr_reader :event_id
  #--------------------------------------------------------------------------
end

class Interpreter
  #--------------------------------------------------------------------------
  def command_101
  # [...]
While it should be something like this:
Code:
class Interpreter
  #--------------------------------------------------------------------------
  attr_reader :event_id
  #--------------------------------------------------------------------------
  def command_101
  # [...]

Slipknot;207609 said:
I don't get it...
So... the choices window will appear after the text is completeley drawn?
That will be very strange, because the window won't be centered until the choices appears O_o
You could center the message window alone over the players head and add the choices window to the side (not only to the right, but also to the left, depending on the players positioning to the map border), which wouldn't create that effect. It wouldn't look centered afterwards, but well... the choices window is just an additional element to the message window anyway, so it wouldn't look off.

Slipknot;207609 said:
Wrong, see this code, especially second line, and you can also look it in the demo :yes:
Code:
[/QUOTE]Well, you used comments in the events to seperate the messages. It works this way, but it'd be more comfortable if the script'd recognize new position changes within the message processing ^_^
 
Status
Not open for further replies.

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top