-
Letter by Letter Message Window
Version: 1.11
Last Update
September 8, 2006
Introduction
This script introduce many new features to the RMXP's message window.
Version History
Version 1.11 (08/09/06)- fixed: Smooth autoclose
- added: Frames before close
- added: Hide pause graphic
Version 1.1 (16/08/06)- fixed: Path
- added: Picture above message
- added: Autoclose
- added: Shadow and Outline text
Demo
http://www.uploadpower.com/en/download.php?id=D5FD4ABA1 (http://www.uploadpower.com/en/download.php?id=D5FD4ABA1)
http://www.fileul.com/view.php?file=KqdJbz
Features- Letter by Letter: you can or not use the letter by letter mode, like in many RPGs.
- Name box: you can draw the name of someone in a small box above the message window. \name[text]
- Face: you can draw a face of the one who's speaking. \face[file]
- Font: you can change the font or size of the text. \f[name]
- Colours: the message text now can support hexadecimal colours. \c[######]
- Bold & Italic: now you can draw the text in bold or italic. \b \i
- Icons: now you can draw icons in the message window. \icon[file]
- Map name: the message window will be able to draw the name of the current map. \map
- Over event: the message window can be drawed above any map event or the player. \p
- Stop: the message window can be stopped until the player press a key. \!
- Autoclose: the message will close without the player input. \%
- Shadow and Outline: the text can be drawed with an outline or with a shadow.
- More features: see the demo to see them.
Script
#==============================================================================
# ** 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
Instructions
You need paste the code before Main, but below SDK.
Every command is explained in the demo.
To remove the SDK dependency, delete these lines:#------------------------------------------------------------------------------
# SDK log
#------------------------------------------------------------------------------
SDK.log('Letter by Letter Message Window', 'Slipknot', '?.?', '??.??.??')
#------------------------------------------------------------------------------
# Begin SDK Enabled Check
#------------------------------------------------------------------------------
if SDK.state('Letter by Letter Message Window')
#------------------------------------------------------------------------------
# End SDK Enabled Test
#------------------------------------------------------------------------------
end
Compatibility
This script couldn't work with other message window script.
F.A.Q.
Q: The text doesn't show, how I make it appear?
A: Paste this above Main: Font.default_name = 'Tahoma'
Q: How I can use the name box?
A: With \Name[text], this is explained in the demo.
Author's Notes
Enjoy it, credit me and report any bug.
-
Really cool script. Tested it and worked fine.
This may be a dumb question 'cause I'm not much of a professional when it comes to scripting, but I coudn't change the color in the namebox.
So am I doing something wrong or can this be done at all? :P
-
Very nice! This is a very excellent script, works fine, no errors. Thanks Slipknot!
-
What do I need to do if I want all the messages to show up just a size or two smaller than the size it originally shows up in? It says how to do it with each individual message on the demo, but I don't want to have to enter that in for every message.
I sorta looked through it, but didn't want to change anything because I'm really not good with these scripts at all.
-
Sh4kk4: you can't
Pixie: If you mean the font size, add this in the method "refresh" below any "self.contents = ...":
self.contents.font.size = your_size
-
Thanks a lot. :D
-
AWESOME SCRIPT! I'm definitely gonna use this one. One question though, how to turn of the letter by letter? I just wish i was this awesome.
-
put it at "0" I presume in the script.
Time for questions.
Q1: Do I add the things into the script or into the event, like faces or name boxes. I'm a little confused about that.
Q2: Did you know that in the demo, you cannot go back downstairs? Minor Event bug there
Q3: Could you PM the answers to me please
-
I have a question:
Can you have a different font? Or does it have to be Tohama? You don't have to PM me with the answer, unless you want to.
-
put it at "0" I presume in the script.
Time for questions.
Q1: Do I add the things into the script or into the event, like faces or name boxes. I'm a little confused about that.
Q2: Did you know that in the demo, you cannot go back downstairs? Minor Event bug there
Q3: Could you PM the answers to me please
For question 1, it foes into the message event, not into the script. so if you want the box to say the name of hero 1 you would type
\name[\n[001]]and then this is the message
thats how i did it and it worked!
-
I have a question:
Can you have a different font? Or does it have to be Tohama? You don't have to PM me with the answer, unless you want to.
Nope you can put any you want as long as it's in the game folders...
-
put it at "0" I presume in the script.
Time for questions.
Q1: Do I add the things into the script or into the event, like faces or name boxes. I'm a little confused about that.
Q2: Did you know that in the demo, you cannot go back downstairs? Minor Event bug there
Q3: Could you PM the answers to me please
For question 1, it foes into the message event, not into the script. so if you want the box to say the name of hero 1 you would type
\name[\n[001]]and then this is the message
thats how i did it and it worked!
\name[namegoeshere]"Text"
That worked for me
-
I keep getting this error message-
????? 'message system' ? 562 ??? NoMethodError ??????????
please help
-
put it at "0" I presume in the script.
Time for questions.
Q1: Do I add the things into the script or into the event, like faces or name boxes. I'm a little confused about that.
Q2: Did you know that in the demo, you cannot go back downstairs? Minor Event bug there
Q3: Could you PM the answers to me please
For question 1, it foes into the message event, not into the script. so if you want the box to say the name of hero 1 you would type
\name[\n[001]]and then this is the message
thats how i did it and it worked!
\name[namegoeshere]"Text"
That worked for me
ya for the "name goes here" i let my player choose the names of the characters, so the \n[001] spits out the name of the character in slot 1 of the database
-
I keep getting this error message-
????? 'message system' ? 562 ??? NoMethodError ??????????
please help
...anybody? please?
-
no idea, you might wanna ask Bliz...
-
put it at "0" I presume in the script.
Time for questions.
Q1: Do I add the things into the script or into the event, like faces or name boxes. I'm a little confused about that.
Q2: Did you know that in the demo, you cannot go back downstairs? Minor Event bug there
Q3: Could you PM the answers to me please
For question 1, it foes into the message event, not into the script. so if you want the box to say the name of hero 1 you would type
\name[\n[001]]and then this is the message
thats how i did it and it worked!
\name[namegoeshere]"Text"
That worked for me
ya for the "name goes here" i let my player choose the names of the characters, so the \n[001] spits out the name of the character in slot 1 of the database
Really? I never knew that! I'll use that.
@gotix: I dont know anything about that.
-
@gotix: I dont know anything about that.
... :'(
-
Really? I never knew that! I'll use that.
really, i read it in help file!
-
I think this should be transferred to the database.
-
I think this should be transferred to the database.
i concur
-
Ive been having some problems with the script. For one:
?????'AMS'? 160 ??? NoMethodError ????????
undifined method 'fit' for nil:NilClass
Line 160 and the stuff after it that I assume effects it are here -
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
If anyone can help with this problem please reply here! Also, It was working fine yesterday now whenever I talk to people while testing the game this happens. (You can even see it work on my demo lol)
EDIT: Ok, I test played my demo from the beginning and the only bit that has a problem are the events in the latest maps. Also, I cut the bit causing the problem to see if that would fix it and then it told my the 'font' part that comes after that is wrong aswell. I have found alot of errors in this script but most of them I have been able to fix. I'll paste the original problem back in now.
-
Try changing
unless system.fit
into
unless system == nil or system.fit
-
thanks for the quick reply, it worked. however now I have a problem with the font parts of the same script. It was a
undifined method 'font' for nil:NilClass
this time.
Heres the part of the script -
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
-
Try changing
contents.font.name = system.font
to
contents.font.name = system == nil ? Font.default_name : system.font
-
Again, thanks that worked. But now I may actually kill this script...
????? 'AMS' ? 172 ??? NoMethodError ???????
undifined method 'sound_enable' for nil:NilClass
lol... refers to this part of the script...
@fit_size, @sound = false, system.sound_enable
Thanks once more to anyone that can help...
-
Most probably there will be even more errors. Change the line to
@fit_size, @sound = false, system == nil ? true : system.sound_enable
-
Man, I gota check this out.
-
Most probably there will be even more errors.
Hey, you guessed it. What you said worked but...
'fit' for nil:NilClass again...
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
Can someone just revamp this script or point me in the dirrection of a better one? lol
-
Change the
if @fit_size = (event || system.fit)
to
if @fit_size = (event || (system == nil ? event : system.fit))
-
I dont want to say it...
'nbyo' for nil:NilClass
this time...
and the part of te script is...
@name_box = Window_NameBox.new(x, y - system.nbyo, name_text)
@name_box.back.opacity = 0 if $game_system.message_frame == 1
Hmmm... Thanks again Blizzard lol, truely you are the scripter people can only dream of becoming.
-
Lol, thanks.
Change
@name_box = Window_NameBox.new(x, y - system.nbyo, name_text)
to
@name_box = Window_NameBox.new(x, y - system == nil ? 0 : system.nbyo, name_text)
-
*Actually Dies because of this script...*
Here we go...
nil can't be coerced into Fixnum
TypeError - at least its slight different problem this time...
the script part is...
@name_box = Window_NameBox.new(x, y - system == nil ? 0 : system.nbyo, name_text)
@name_box.back.opacity = 0 if $game_system.message_frame == 1
Looks like the bit you changed. Oh, it is. Hmmm, any help appreciated as always. By the end of this i'll be a expert at scripting! lol!
-
My bad, should be:
@name_box = Window_NameBox.new(x, y - (system == nil ? 0 : system.nbyo), name_text)
-
dosen't this belong in script database? :o
-
No, it belongs in the trash ._. lol...
Font again...
dumb.font.name = system.font
(Almost at the end of the script with this error; could be the last one!)
Thanks to any help...
-
dumb.font.name = (system == nil ? Font.default_name : system.font)
-
...
'nb_skin' for nil:NilClass
...
skin = system.nb_skin ? system.nb_skin : $game_system.windowskin_name
@back.windowskin = RPG::Cache.windowskin(skin)
...
Thanks again...
-
skin = (system == nil ? $game_system.windowskin_name : (system.nb_skin ? system.nb_skin : $game_system.windowskin_name))
-
skin = (system == nil ? $game_system.windowskin_name : (system.nb_skin ? system.nb_skin : $game_system.windowskin_name))
Ok, thanks! Let's see what happens next...
Its the font for nil:NilClass again...
heres the script part...
bitmap.font.name = system.font
Hmmm...
Changed it to
bitmap.font.name = system == nil ? Font.default_name : system.font
And it...
IT WORKED! lol... but...
'outline' for nil:NilClass
(Back at line 376 :'()
and the script is...
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
The first line of that is the one it says, but I put the rest there as its connected (In some way or another... I can just see by the spacing of it...)
Thanks again ~
Regards,
Darico
-
if system != nil and system.outline
...
elsif system != nil and system.shadow
...
Change all the
system.height
to
(system == nil ? 374 : system.height)
-
'outline' for nil:NilClass
:'(
Bit we just edited -
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 == nil ? 374 : system.height), c)
contents.draw_text(@x + @start_x, y + 1, w * 2, (system == nil ? 374 : system.height), c)
contents.draw_text(@x + @start_x - 1, y, w * 2, (system == nil ? 374 : system.height), c)
contents.draw_text(@x + @start_x, y - 1, w * 2, (system == nil ? 374 : system.height), c)
contents.font.color = color
contents.draw_text(@x + @start_x, y, w * 2, (system == nil ? 374 : 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 == nil ? 374 : system.height), c)
contents.font.color = color
contents.draw_text(@x + @start_x, y, w * 2, (system == nil ? 374 : system.height), c)
else
contents.draw_text(@x + @start_x, y, w * 2, (system == nil ? 374 : system.height), c)
end
.....................................
-
But you forgot:
if system != nil and system.outline
...
elsif system != nil and system.shadow
...
-
Oppsie... lol ; ;
Well, another problem (Who would of guessed?!)
'sound_enable' for nil:NilClass
and the script...
@sound = (system.sound_enable && c != ' ')
@x += w
I'm getting ever so slightly pissed off by this script... Maybe someone should just make another one? lol ; ;
-
Lol, it ain't that easy. (Actually it is, I made something similar the other day !_! )
@sound = ((system == nil ? true : system.sound_enable) && c != ' ')
You know... I am not sure if it's really a good idea to change all of that... You won't be able to change the properties of the AMS most probably. O_o Have you tried it with a new game or save game by chance?
-
Ill get back to you in 10min... If my save files are corrupted.... >< *Gets knife out*
-
I can make your a little add-on that makes them compatible with they Letter-by-Letter script if the really are. ;)
-
Yep, the it was the save files after all that lmao! luckly the script still works! I just played to the bit I was having problems with and it works fine! *Uses the save point in the area and deletes old saves*
So.. Umm... Thanks for all the help Blizzard!(rep up!)^^ Maybe you should check out my demo? :P
Regards,
Darico
-
If I ever find the time, sure. I still haven't played through Yossy's game... (-_-')
I should now delete these pointless posts and... no wait, 100k border. :=
-
One more thing... how do you speed up the letter by letter thing? Or can you not? If you can't how do I turn it off?
-
At the beginning of the script:
@speed = 3
Just change the number.
-
Oh right, cool thanks yet again! Won't have another question on it!
-
Wow, there were alot of problems.
-
Nice script i'm sure gonna use it.
-
Um... Which part of the script does the timed exiting out? I want to use only that because something else in the script disagrees with my present script. :(
-
sorry for answer so late, but i haven't been active on any rmxp community
@jblair: this line
@letter_by_letter = true
to
@letter_by_letter = false
if on game, call this:
message.letter_by_letter = false; true
@ravenshade: 1. read the demo 2. I haven't seen it, but i'm kinda sure it doesn't exist. 3. I like to post them, is better.
@nevfx: @font = 'my font'
@gotix: you changed something, just "repaste" the script.
@darico: shut up, ok? it's seems that you removed or changed something, so Game_Message isn't defined, just follow the scripts's intructions.
@sandypup123: you mean the autoclose? is \%[frames]
where frames is a number.
@blizzard: thanks for help
@the rest: thanks.
-
I got this error:
Script 'Window_Message' line 16: NameError occured.
uninitialized constant SDK
-
Hey, your scripts are awsome. Just a text script has made my games a whole lot better.
thanks a million!
-
@atracius: cuz you don't have SDK, get it or delete the lines (see 1st post)
@nauman: thanks :)
-
Hey this is great man !
Im going to use it
+ rep also
-
Thanks, and when I got rep ???
-
Reputation..
The points under ur name but your post count is to low to change it i think or maybe even see it =/
-
I was wondering if you can temporarily turn off l.b.l. and have it display all of the text in a few text boxes...
-
To deactivate it:
message.letter_by_letter = false; true
To reactivate it:
message.letter_by_letter = true
-
Thx Season In The Abyss! ;8
[Edit]BTW are the scripts Java? Cuz if they are then maybe i CAN make sense of them! :)
-
OK this might be a stupid question but how do i find out what the hexadecimal is for a color? Specifically what is black?
-
#000000
-
#000000
thx.
-
One simple question:
What should I type on Call Script command when I want to change the speed of letter-per-letter?
-
message.speed = 3
-
i'm getting a wierd error when i try to use the \P command
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fimg479.imageshack.us%2Fimg479%2F2928%2Ferrorke5.png&hash=f5c462fa351cd5098ae4de2b46edd1efbe606195) (http://imageshack.us)
-
Maybe you're using it with a non-existent image.
Make sure that image exists.
-
ehh...
not using an image on that particular message, just the \P command
-
ups :lol: ...
That's is a strage bug, in the demo it works fine ???
-
it works fine in the demo, and in the first room in my project. but for some reason it doesnt work in the second room.
-
Upload your project and send it to me (please don't upload it to megaupload!)
-
this error is annoying cause it happens sometimes but works other times...
i sent u a PM a while ago with a link, if u haven't noticed it yet.
-
Sorry, it was too big and wasn't able to download it... then I just forgot it! :D
It now appears as deleted, please send it again, but be sure to send a small file!
-
gah dont have the project myself atm
but its always on line 282 and the error message is always "undefined method 'height' for nil class when I try to use the \P command, though it works sometimes and other times it doesn't. its impossible to tell when it will work.
-
I'm kinda sure you're using "\p" with a non-existent event ;)
-
im not even including an event number with the \P command, which in the demo made it appear directly above the event using the \p command. how could the event using the \p command not exist itself?
-
I don't know, have you added more scripts? ???
Because it don't seem to be a bug of my script, as in the demo works fine
-
well like i said it works sometimes then other times it does not work, its very unpredictable, alot of times it seems right when u teleport to a new map it is more likely to happen...i've been testing it without my other scripts as well and it doesn't seem to be a problem with compatibility
-
Okay, I understand that you're supposed to put this in the script... but I am such a total N00b at scripting, I have no idea where to put it!!! Can anyone help me? ;9
-
Hey, great script but I have a problem. I keep getting an error when a message comes up that uses the /name[text] tag. I thought it was just My Game, so I launched the Demo one and it does the same thing. Any ideas? Thanks.
Rosco
-
Wait wait wait... How do you resize a window?
-
Ah, Problem Solved! Looks like RPG Maker was having a conflict with an RTP XP package I had installed.... I erased everything and reinstalled,cha-ching. Works like a charm. Really cool script man.
Rosco
-
@doomender: Type this in the Call Script command:
message.fit = true
or use this in the message you want yo be resized: \p, you may want to use \p[id] being id the id of an event.
-
I took out what you said, and it doesnt work.
-
I get this error whenever a message is about to pop up...
????? 'Message' ? 618 ??? RGSSError ????????
failed to create bitmap
-
Why hasnt this been added to the database? :P
-
How can I change the font's size??????
-
This really should be in the database.
How can I change the font's size??????
and \s[num], like it says in the demo. num is the size you want the text to be.
-
Uhh... How do you report it, again? >< Just so someone knows to move. :P
EDIT: Yay! Moved! Btw, Nouman's like mod over pretty much all the RPG Maker related forums.
-
Hold on... I think it might be something to do with PK >.<
Do you use that?
-
Now I have a really bad problem!! GAR!! When I try to run it this happens:
-
@Rune: try adding this in Main:
Font.default_name = 'Tahoma'
@venn177: You don't have SDK, so delete lines about SDK (see instructions in 1st post).
-
@Rune: try adding this in Main:
Font.default_name = 'Tahoma'
That stops the bitmap problem? O_o
Won't that just change the font?
-
Ol i'm haveing a few problems I can't get the sound thing to work I used the "message.sound_enable = true" in the text bout with out the " " but the "message.sound_enable =true" shows up in the messege window and the sound dosn't play
can you help?
-
Ol i'm haveing a few problems I can't get the sound thing to work I used the "message.sound_enable = true" in the text bout with out the " " but the "message.sound_enable =true" shows up in the messege window and the sound dosn't play
can you help?
The "message.sound_enable = true" thingy should typed on call script.
-
should be call script command as stated above
also, at the end of the call script command, put 'return true'
-
Thanks a lot, been looking for this script, and I like how it also comes with the face option as well.
-
Omg, i love you ;D
Exactly the script i was looking for, i'd also like to use the face option, but i can't find any face sets :(
-
Every time I put the Text for like showing the name box it show the Text. the message would look like this:
/Name[Arto] Hello and would look like that in the game what am i doing wrong? ???
-
try \ instead of /
-
Thnx it worked ;D
-
Nice ;D, but I think I'll stick with Slipknot's message system, I'm not so wild with the "Typing" or "Letter by Letter" part, makes time go soooo slowly, and it's impossible to skip scenes without using the hotkey, and that annoys me. But nice! Really nice! I especially like the stuff about the name box ( :o, so that is the person talking...) instead of writing sth like; "Man: Hello." :lol: so I really like this! Great job!
-
This is slipknot's message system, just the updated one.
-
This is awesome, and I love it, but how do I make the font something other then tahoma?
-
what font do u want to change?
in the text box only or all fonts?
-
all of the fonts, how would I do that?
-
Font.default_name = 'font name here'
change the name between ''
and
put it in "main"
example
Font.default_name = 'Tahoma'
Font.default_name = 'Arial'
-
Thanks!
-
Ok im getting the Script for a friend on his laptop and the download demo daosnt work so can someone plz tell me how use face graphics in text box pla and thnx really apretiate it :)
-
You gotta have the face in pictures then put in
\Face[Picture Name Here]
If it's not exactly like the picture name then it won't appear.
-
thnx!
-
How do i use the namebox for all the different people in my game (Pm me any help please)
Thanks ; )
-
\name[text]
-
\name[text]
Thanks, i figured mostly everything out, but where exactly do i place the \name[text]?
-
Inside the Show Text command.
So the event would be like:
@>Text: \name[text]This is a message.
-
Inside the Show Text command.
So the event would be like:
@>Text: \name[text]This is a message.
Thanks a lot... you seriously are a great person.
-
One preoblem i encounterd, not sure if it has to do with the script or not.. I am using BLIZZ ABS battle system script, and this one (that all) but if i use both, the text wont type out for me, it gets stuck on the first box and doesn't continue. Is there a way to fix this?
-
What is a SDK? i cant find it in my script, is it one of the title?
-
What is a SDK? i cant find it in my script, is it one of the title?
http://www.gamebaker.com/rmxp/scripts/sdk.htm
-
Awesome script. But, I've got one question... if anyone knows the answer.
Is there a way to make it so that when using the autoclose function it doesn't respond to you hitting a key?
-
It won't let me proceed on to another message. I make a message and it's shown, but when I press enter to go to the next message it doesn't let me and it stays on that message.
Also I have skip = true and it won't let me skip.
-
Alright. So I've copied the script as Game_Message and I've deleted the SDK lines. I keep getting the message (in bold):
????? 'Game_Message' ? 130 ??? TypeError ????????
undefined superclass `Window_Selectable'
Is there a script I need to change or just something simple like the name?
Usually scripts are no problem for me, but this one is tricky..
-
Great script slipknot!!!!!!
I have one question
Is there a way to set the transparency of an image, so the background is not displayed
-an example of this might be one of your other text scripts, where you had Richter display with transparency
-
Alright. So I've copied the script as Game_Message and I've deleted the SDK lines. I keep getting the message (in bold):
????? 'Game_Message' ? 130 ??? TypeError ????????
undefined superclass `Window_Selectable'
Is there a script I need to change or just something simple like the name?
Usually scripts are no problem for me, but this one is tricky..
This is my problem as well. It happened after I deleted the SDK lines.
-
Nevermind, I got it working. I didn't realise you wanted us to actually put it right in front of Main. After I did that it worked fine.
-
Well, I bet this is a stupid question and I desperately hope I don't get in trouble for it but...
How to download this script's demo?
The download links in the first post appear to be dead, I can't find any others scanning through the thread, and Google-ing for the script merely turns up places that have copy-pastes of the first post, dead links and all.
I suppose the question is: Can anyone provide a working link to the demo file again?
While I realise the script proper is still in the first post, with my inexperience, it seems like suicide trying to use the script without its instructions.
-
Scripts fine and all but is there a way you can shut off letter by letter by means of text box?
and i tired to see if you did that in the demo but link says that its not available to my area.
i do like your script tho its simple, AMS is a little confusing too much stuff
-
I'd like a demo of this, but both links are dead. Can you resubmit or email it to me?
EDIT: On second thought, PM me or post a complete list of commands.
-
Hey, this is an awesome script. But I'm wondering if it is possible to use the key "H" to close out or continue in the message box. It's using "ENTER" instead. I looked through the script and couldn't find anything. any suggestions?
-
First of all, I love the script, but I have a question or two...
Is there any way to decrease the padding on the message box?
As seen in the screenshot (with white border added to the face png to better see where the edges are), the text starts out in the middle, which works ok when it's just one line, but with two it looks just weird. IMO, it's better to have it start near the top, since that looks ok with both one- and two-liners. Same with the face; the space above and to the left of it is far too much; I could easily decrease it by ten pixels each. (Also, that way the window wouldn't have to be huge to avoid cropping of the bottom of the image.)
I've been fiddling around with various numbers, but I don't seem to have found the one that controls that part =( Admittedly, it's pretty much the first time I'm looking at this scripting language, so I might be overlooking something totally obvious, but if anyone could help me out it'd be awesome.
-
What part of the script controls the speed of the letters?
-
Somewhere around line 45.