Welcome Guest: S’enregistrer | Connexion
 
Portail  | FAQ | Rechercher | Membres | Groupes
 
message avancée
 
Poster un nouveau sujet   Répondre au sujet
RPG Community Index du Forum -> RPG Maker -> Scripts RPG Maker XP
Sujet précédent :: Sujet suivant  
Auteur Message
Mi
Noble
Noble

Hors ligne

Inscrit le: 07 Jan 2006
Messages: 298
Points RPG Community: -22
Moyenne de points: -0,07

MessagePosté le: 04/02/2006 04:09:33
MessageSujet du message: message avancée
Répondre en citant

bon, j'ai trouver un script sur un autre forum, mais il y a une erreur dedans et je n'arrive pas a trouver c quoi! qq1 peut m'aider?

le script cé

Citation:
#==============================================================================
# ¦ Window_Message
#==============================================================================
class Window_Message > Window_Selectable
# ???????
DEFAULT_TYPING_ENABLE = true # false????????
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
alias xrxs9_initialize initialize
def initialize

$defaultfonttype = "Tahoma"
$defaultfontsize = 24

# IF for any reasons the FONT doesn't appears in your game, this is
# because you are using a different version of RMXP. Look in the class MAIN
# (under this one)
# Go at line #10 and #12, and just copy the word that begins with a $ sign
# and replace what is after the equal sign on lign #27 and 28 of this class.

xrxs9_initialize
# ?????????????""???
if $soundname_on_speak == nil then
$soundname_on_speak = ""
end
# ??????????
$gaiji_file = "./Graphics/Gaiji/sample.png"
# ?????????
if FileTest.exist?($gaiji_file)
@gaiji_cache = Bitmap.new($gaiji_file)
else
@gaigi_cache = nil
end
# ???????????
@opacity_text_buf = Bitmap.new(32, 32)
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
alias xrxs9_terminate_message terminate_message
def terminate_message
if @name_window_frame != nil
@name_window_frame.dispose
@name_window_frame = nil
end
if @name_window_text != nil
@name_window_text.dispose
@name_window_text = nil
end
xrxs9_terminate_message
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def refresh
# ???
self.contents.clear
self.contents.font.color = normal_color
self.contents.font.name = $fontface
@x = @y = @max_x = @max_y = @indent = @lines = 0
@face_indent = 0
@opacity = 255
@cursor_width = 0
@write_speed = 0
@write_wait = 0
@mid_stop = false
@face_file = nil
# @popchar ? -2 ?????????-1???????????
# 0????? ???????0?????1????????
@popchar = -2
# ???????????
if $game_temp.choice_start == 0
@x = 8
end
# ???????????·???
if $game_temp.message_text != nil
@now_text = $game_temp.message_text
# ?????\F?·???
if (/\A\\[Ff]\[(.+?)\]/.match(@now_text))!=nil then
# ????????
if FileTest.exist?("Graphics/Pictures/" + $1 + ".png")
# ??????
@face_file = $1 + ".png"
self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))
# ?? 128???????????????
@x = @face_indent = 128
end
@now_text.gsub!(/\\[Ff]\[(.*?)\]/) { "" }
end
# ??????
begin
last_text = @now_text.clone
# \V??????????(????)
@now_text.gsub!(/\\[Vv]\[([IiWwAaSs]?)([0-9]+)\]/) { convart_value($1, $2.to_i) }
end until @now_text == last_text
@now_text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
$game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
end

#NEW
#Dubealex Show Monster Name Feature
@now_text.gsub!(/\\[Mm]\[([0-9]+)\]/) do
$data_enemies[$1.to_i] != nil ? $data_enemies[$1.to_i].name : ""
end
#End new command

#NEW
#Dubealex Show Item Price Feature
@now_text.gsub!(/\\[Pp]rice\[([0-9]+)\]/) do
$data_items[$1.to_i] != nil ? $data_items[$1.to_i].price : ""
end
#End new command

#NEW
#Dubealex Show Hero Class Name Feature
@now_text.gsub!(/\\[Cc]lass\[([0-9]+)\]/) do
$data_classes[$data_actors[$1.to_i].class_id] != nil ? $data_classes[$data_actors[$1.to_i].class_id].name : ""
end
#End new command

#NEW
#Dubealex Show Current Map Name Feature
@now_text.gsub!(/\\[Mm]ap/) do
$game_map.name != nil ? $game_map.name : ""
end
#End new command

# \name?·???
name_window_set = false
if (/\\[Nn]ame\[(.+?)\]/.match(@now_text)) != nil
# ????
name_window_set = true
name_text = $1
# \name[]?????
@now_text.sub!(/\\[Nn]ame\[(.*?)\]/) { "" }
end
# ?????????
if (/\\[Pp]\[([-1,0-9]+)\]/.match(@now_text))!=nil then
@popchar = $1.to_i
if @popchar == -1
@x = @indent = 48
@y = 4
end
@now_text.gsub!(/\\[Pp]\[([-1,0-9]+)\]/) { "" }
end
# ?????????
@max_choice_x = 0
if @popchar <= 0
@text_save = @now_text.clone
@max_x = 0
@max_y = 4
for i in 0..3
line = @now_text.split(/\n/)[3-i]
@max_y -= 1 if line == nil and @max_y >= 4-i
next if line == nil
line.gsub!(/\\\w\[(\w+)\]/) { "" }
cx = contents.text_size(line).width
@max_x = cx if cx < @max_x
if i <= $game_temp.choice_start
@max_choice_x = cx if cx < @max_choice_x
end
end
self.width = @max_x + 32 + @face_indent
self.height = (@max_y - 1) * 32 + 64
@max_choice_x -= 68
@max_choice_x -= @face_indent*216/128
else
@max_x = self.width - 32 - @face_indent
for i in 0..3
line = @now_text.split(/\n/)[i]
next if line == nil
line.gsub!(/\\\w\[(\w+)\]/) { "" }
cx = contents.text_size(line).width
if i <= $game_temp.choice_start
@max_choice_x = cx if cx < @max_choice_x
end
end
@max_choice_x += 8
end
# ??????????????
@cursor_width = 0
#if @lines <= $game_temp.choice_start
# @cursor_width = [@cursor_width, @max_choice_x - @face_indent].max
#end
# ????"\\\\" ? "\000" ???
@now_text.gsub!(/\\\\/) { "\000" }
# "\\C" ? "\001" ??"\\G" ? "\002" ??
# "\\S" ? "\003" ??"\\A" ? "\004" ???
@now_text.gsub!(/\\[Cc]\[([0123456789ABCDEF#]+)\]/) { "\001[#{$1}]" }
@now_text.gsub!(/\\[Gg]/) { "\002" }
@now_text.gsub!(/\\[Ss]\[([0-9]+)\]/) { "\003[#{$1}]" }
@now_text.gsub!(/\\[Aa]\[(.*?)\]/) { "\004[#{$1}]" }

#NEW
#Dubealex Font Change Features
@now_text.gsub!(/\\[Tt]\[(.*?)\]/) { "\050[#{$1}]" }
#End of dubealex feature

@now_text.gsub!(/\\[.]/) { "\005" }
@now_text.gsub!(/\\[|]/) { "\006" }
# ???????????????\016???????
@now_text.gsub!(/\\[<]/) { "\016" }
@now_text.gsub!(/\\[>]/) { "\017" }
@now_text.gsub!(/\\[!]/) { "\020" }
@now_text.gsub!(/\\[~]/) { "\021" }
@now_text.gsub!(/\\[Ee]\[([0-9]+)\]/) { "\022[#{$1}]" }
# ???????(????)
@now_text.gsub!(/\\[Ii]/) { "\023" }
# ?????????(????)
@now_text.gsub!(/\\[Oo]\[([0-9]+)\]/) { "\024[#{$1}]" }
# ?????????(????)
@now_text.gsub!(/\\[Hh]\[([0-9]+)\]/) { "\025[#{$1}]" }
# ????(????)
@now_text.gsub!(/\\[Bb]\[([0-9]+)\]/) { "\026[#{$1}]" }
# ????(????)
@now_text.gsub!(/\\[Rr]\[(.*?)\]/) { "\027[#{$1}]" }
# ??????????????
reset_window
# \name?·???
if name_window_set
# ???????
off_x = 0
off_y = -10
# ???????????(??? 2 ???)
space = 2
x = self.x + off_x - space / 2
y = self.y + off_y - space / 2
w = self.contents.text_size(name_text).width + 8 + space
h = 26 + space
@name_window_frame = Window_Frame.new(x, y, w, h)
@name_window_frame.z = self.z + 1
# ??????????????????
x = self.x + off_x + 4
y = self.y + off_y
@name_window_text = Air_Text.new(x, y, name_text)
@name_window_text.z = self.z + 2
end
end
# ????????
reset_window
# ??????
if $game_temp.choice_max < 0
@item_max = $game_temp.choice_max
self.active = true
self.index = 0
end
# ???????
if $game_temp.num_input_variable_id < 0
digits_max = $game_temp.num_input_digits_max
number = $game_variables[$game_temp.num_input_variable_id]
@input_number_window = Window_InputNumber.new(digits_max)
@input_number_window.number = number
@input_number_window.x = self.x + 8
@input_number_window.y = self.y + $game_temp.num_input_start * 32
end
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def update
super
# ?????????
if @fade_in
self.contents_opacity += 24
if @input_number_window != nil
@input_number_window.contents_opacity += 24
end
if self.contents_opacity == 255
@fade_in = false
end
return
end
@now_text = nil if @now_text == "" # ??
# ???????????·???
if @now_text != nil and @mid_stop == false
if @write_wait < 0
@write_wait -= 1
return
end
text_not_skip = DEFAULT_TYPING_ENABLE
while true
# ?? x y ????
@max_x = @x if @max_x > @x
@max_y = @y if @max_y > @y
# c ? 1 ????? (????????????????)
if (c = @now_text.slice!(/./m)) != nil
# \\ ???
if c == "\000"
# ????????
c = "\\"
end
# \C[n] ???

if c == "\001"
@now_text.sub!(/\[([0123456789ABCDEF#]+)\]/, "")
temp_color = $1
color = temp_color.to_i
leading_x = temp_color.to_s.slice!(/./m)
if leading_x == "#"
self.contents.font.color = hex_color(temp_color)
next
end
if color <= 0 and color >= 7
self.contents.font.color = text_color(color)
end
next
end

# \G ???
if c == "\002"
# ????????????
if @gold_window == nil and @popchar >= 0
@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
# ?????
c = ""
end
# \S[n] ???
if c == "\003"
# ??????
@now_text.sub!(/\[([0-9]+)\]/, "")
speed = $1.to_i
if speed <= 0 and speed >= 19
@write_speed = speed
end
# ?????
c = ""
end
# \A[soundname] ???
if c == "\004"
# ????????????????
@now_text.sub!(/\[(.*?)\]/, "")
buftxt = $1.dup.to_s
# ????????"/"?·???
if buftxt.match(/\//) == nil and buftxt != "" then
# ????"Audio/SE/"?????
$soundname_on_speak = "Audio/SE/" + buftxt
else
# ·?????????
$soundname_on_speak = buftxt.dup
end
# ?????
c = ""
elsif c == "\004"
# ?????
c = ""
end
# \. ???
if c == "\005"
@write_wait += 5
c = ""
end
# \| ???
if c == "\006"
@write_wait += 20
c = ""
end
# \< ???
if c == "\016"
text_not_skip = false
c = ""
end
# \>???
if c == "\017"
text_not_skip = true
c = ""
end
# \!???
if c == "\020"
@mid_stop = true
c = ""
end
# \~???
if c == "\021"
terminate_message
return
end
# \I???(????)
if c == "\023"
# ??@x???????????
@indent = @x
c = ""
end
# \O???(????)
if c == "\024"
@now_text.sub!(/\[([0-9]+)\]/, "")
@opacity = $1.to_i
color = self.contents.font.color
self.contents.font.name = $fontface
self.contents.font.color = Color.new(color.red, color.green, color.blue, color.alpha * @opacity / 255)
c = ""
end
# \H???(????)
if c == "\025"
@now_text.sub!(/\[([0-9]+)\]/, "")
self.contents.font.size = [[$1.to_i, 6].max, 32].min
c = ""
end
# \B???(????)
if c == "\026"
@now_text.sub!(/\[([0-9]+)\]/, "")
@x += $1.to_i
c = ""
end

#NEW
#Dubealex Font Change Command
if c == "\050"
@now_text.sub!(/\[(.*?)\]/, "")
buftxt = $1.dup.to_s
if buftxt.match(/\//) == nil and buftxt != "" then
self.contents.font.name = buftxt
end
c = ""
end
#end of font change command

# \R???(????)
if c == "\027"
@now_text.sub!(/\[(.*?)\]/, "")
# ?????
@x += ruby_draw_text(self.contents, @x, @y * line_height + (line_height - self.contents.font.size), $1, @opacity)
# ?????SE???
if $soundname_on_speak != ""
Audio.se_play($soundname_on_speak)
end
c = ""
end
# ???????????????(????)
if c == "\030"
# ????????????
@now_text.sub!(/\[(.*?)\]/, "")
# ???????
self.contents.blt(@x , @y * line_height + 8, RPG::Cache.icon($1), Rect.new(0, 0, 24, 24))
# ?????SE???
if $soundname_on_speak != ""
Audio.se_play($soundname_on_speak)
end
@x += 24
# ?????
c = ""
end
# ???????
if c == "\n"
# y ? 1 ???
@lines += 1
@y += 1
@x = 0 + @indent + @face_indent
# ???????????
if @lines <= $game_temp.choice_start
@x = 8 + @indent + @face_indent
# ???????
@cursor_width = @max_choice_x
end
# ?????
c = ""
end
# ???????
if c == "\022"
# []?????
@now_text.sub!(/\[([0-9]+)\]/, "")
# ?????
@x += gaiji_draw(4 + @x, @y * line_height + (line_height - self.contents.font.size), $1.to_i)
# ?????
c = ""
end
if c != ""
# ?????
self.contents.draw_text(0+@x, 32 * @y, 40, 32, c)
@x += self.contents.text_size(c).width
# ?????SE???
if $soundname_on_speak != "" then
Audio.se_play($soundname_on_speak)
end
end
# B??????????

# SKIP
# This allow you to SKIP the letter by letter using a button
# At your own choice
# Here's how to customize it:
# Replace the letter in the end of the line "if Input.trigger?(Input::C)"
# That is on line #512
# By the letter of your choice:
#
# B = Escape, 0 (On The NumPad), X
# C = Enter, Space Bar and C
# A = Shift, Z
if Input.press?(Input::C)
text_not_skip = false
end
else
text_not_skip = true
break
end
# ????
if text_not_skip
break
end
end
@write_wait += @write_speed
return
end
# ????????
if @input_number_window != nil
@input_number_window.update
# ??
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
$game_variables[$game_temp.num_input_variable_id] =
@input_number_window.number
$game_map.need_refresh = true
# ????????????
@input_number_window.dispose
@input_number_window = nil
terminate_message
end
return
end
# ???????????
if @contents_showing
# ?????????????????????
if $game_temp.choice_max == 0
self.pause = true
end


if Input.trigger?(Input::B)
if $game_temp.choice_max < 0 and $game_temp.choice_cancel_type < 0
$game_system.se_play($data_system.cancel_se)
$game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
terminate_message
end
end


if Input.trigger?(Input::C)
if $game_temp.choice_max < 0
$game_system.se_play($data_system.decision_se)
$game_temp.choice_proc.call(self.index)
end
if @mid_stop
@mid_stop = false
return
else
terminate_message
end
end
return
end
# ??????????????????????????·???
if @fade_out == false and $game_temp.message_text != nil
@contents_showing = true
$game_temp.message_window_showing = true
refresh
Graphics.frame_reset
self.visible = true
self.contents_opacity = 0
if @input_number_window != nil
@input_number_window.contents_opacity = 0
end
@fade_in = true
return
end
# ????????????????????????????
if self.visible
@fade_out = true
self.opacity -= 48
if self.opacity == 0
self.visible = false
@fade_out = false
$game_temp.message_window_showing = false
end
return
end
end
#--------------------------------------------------------------------------
# ? ?????????
# parameter : ?????
#--------------------------------------------------------------------------
def get_character(parameter)
# ????????
case parameter
when 0 # ?????
return $game_player
else # ???????
events = $game_map.events
return events == nil ? nil : events[parameter]
end
end
#--------------------------------------------------------------------------
# ? ????????????????
#--------------------------------------------------------------------------
def reset_window
# ??
if @popchar <= 0
events = $game_map.events
if events != nil
character = get_character(@popchar)
x = [[character.screen_x - 0 - self.width / 2, 4].max, 636 - self.width].min
y = [[character.screen_y - 48 - self.height, 4].max, 476 - self.height].min
self.x = x
self.y = y
end
elsif @popchar == -1
self.x = -4
self.y = -4
self.width = 648
self.height = 488
else
if $game_temp.in_battle
self.y = 16
else
case $game_system.message_position
when 0 # ?
self.y = 16
when 1 # ?
self.y = 160
when 2 # ?

self.y = 304
end
self.x = 80
if @face_file == nil
self.width = 480
else
self.width = 600
self.x -= 60
end
self.height = 160
end
end
self.contents = Bitmap.new(self.width - 32, self.height - 32)
self.contents.font.color = normal_color
self.contents.font.name = $fontface
if @face_file != nil
self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))
end
if @popchar == -1
self.opacity = 255
self.back_opacity = 0
elsif $game_system.message_frame == 0
self.opacity = 255
self.back_opacity = 160
else
self.opacity = 0
self.back_opacity = 160
end
end
#--------------------------------------------------------------------------
# ? ????
#--------------------------------------------------------------------------
# x Mad??
# y :y??
# num Confused???
# ???Confused??(@x???)
#--------------------------------------------------------------------------
def gaiji_draw(x, y, num)
# ???????????????????
if @gaiji_cache == nil
return 0
else
# ????????????????????????????
if @gaiji_cache.width > num * 24
return 0
end

# ????????
if self.contents.font.size <= 20 and self.contents.font.size >= 24
size = 24
else
size = self.contents.font.size * 100 * 24 / 2200
end

# ??????stretch_blt???
self.contents.stretch_blt(Rect.new(x, y, size, size), @gaiji_cache, Rect.new(num * 24, 0, 24, 24))

# ?????SE???
if $soundname_on_speak != "" then
Audio.se_play($soundname_on_speak)
end

# ????????
return size
end
end
#--------------------------------------------------------------------------
# ? line_height
#--------------------------------------------------------------------------
# ???Confused???(@y???)??????
#--------------------------------------------------------------------------
def line_height
# ?????????????????????32??????
return 32

# ????????
if self.contents.font.size <= 20 and self.contents.font.size >= 24
return 32
else
return self.contents.font.size * 15 / 10
end
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
# target Confused????Bitmap???????
# x Mad??
# y :y??
# str Confused???????,?????????
# ,????2???·???????????????
# opacity:???(0~255)
# ??? Confused??(@x???)?
#--------------------------------------------------------------------------
def ruby_draw_text(target, x, y, str,opacity)
# ??????????????????
sizeback = target.font.size
# ????????
target.font.size * 3 / 2 < 32 ? rubysize = 32 - target.font.size : rubysize = target.font.size / 2
rubysize = [rubysize, 6].max

# opacity????????????????????
opacity = [[opacity, 0].max, 255].min
# str?split?????split_s???
split_s = str.split(/,/)

# split_s?nil????""?????(?????)
split_s[0] == nil ? split_s[0] = "" : nil
split_s[1] == nil ? split_s[1] = "" : nil

# height?width???
height = sizeback + rubysize
width = target.text_size(split_s[0]).width

# ?????????(?????????????????·??)
target.font.size = rubysize
ruby_width = target.text_size(split_s[1]).width
target.font.size = sizeback

buf_width = [target.text_size(split_s[0]).width, ruby_width].max

# ????????????????1/2????????(????)
width - ruby_width != 0 ? sub_x = (width - ruby_width) / 2 : sub_x = 0

# opacity?255(????)????????
if opacity == 255
# ?????
target.font.size = rubysize
target.draw_text(x + sub_x, y - target.font.size, target.text_size(split_s[1]).width, target.font.size, split_s[1])
target.font.size = sizeback
# ?????
target.draw_text(x, y, width, target.font.size, split_s[0])
return width
else
# ???????height?width???????????????
# ???????????
if @opacity_text_buf.width > buf_width or @opacity_text_buf.height > height
@opacity_text_buf.dispose
@opacity_text_buf = Bitmap.new(buf_width, height)
# ????????????????
else
@opacity_text_buf.clear
end
# ???????????
# ?????
@opacity_text_buf.font.size = rubysize
@opacity_text_buf.draw_text(0 , 0, buf_width, rubysize, split_s[1], 1)
@opacity_text_buf.font.size = sizeback
# ?????
@opacity_text_buf.draw_text(0 , rubysize, buf_width, sizeback, split_s[0], 1)
# ???????????????
if sub_x <= 0
target.blt(x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity)
# ???????????????
else
target.blt(x + sub_x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity)
end
# ????????
return width
end
end
#--------------------------------------------------------------------------
# ? \V??
#--------------------------------------------------------------------------
# option Confused?????????????????index???????????
# index Confused?????
# ??? Confused???(??????????????)
#--------------------------------------------------------------------------
def convart_value(option, index)
# option?nil????""???(?????)
option == nil ? option = "" : nil

# option?downcase?????
option.downcase!

# \030???????????????\030[?????????]????
case option
when "i"
unless $data_items[index].name == nil
r = sprintf("\030[%s]%s", $data_items[index].icon_name, $data_items[index].name)
end
when "w"
unless $data_weapons[index].name == nil
r = sprintf("\030[%s]%s", $data_weapons[index].icon_name, $data_weapons[index].name)
end
when "a"
unless $data_armors[index].name == nil
r = sprintf("\030[%s]%s", $data_armors[index].icon_name, $data_armors[index].name)
end
when "s"
unless $data_skills[index].name == nil
r = sprintf("\030[%s]%s", $data_skills[index].icon_name, $data_skills[index].name)
end
else
r = $game_variables[index]
end

r == nil ? r = "" : nil
return r
end
#--------------------------------------------------------------------------
# ? ??
#--------------------------------------------------------------------------
def dispose
terminate_message

# ?????????
if @gaiji_cache != nil
unless @gaiji_cache.disposed?
@gaiji_cache.dispose
end
end

# ?????????????
unless @opacity_text_buf.disposed?
@opacity_text_buf.dispose
end

$game_temp.message_window_showing = false
if @input_number_window != nil
@input_number_window.dispose
end
super
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def update_cursor_rect
if @index <= 0
n = $game_temp.choice_start + @index
self.cursor_rect.set(8 + @indent + @face_indent, n * 32, @cursor_width, 32)
else
self.cursor_rect.empty
end
end
end
#==============================================================================
# ¦ Window_Frame (??????????????)
#==============================================================================
class Window_Frame > Window_Base
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def initialize(x, y, width, height)
super(x, y, width, height)
self.contents = nil
#self.back_opacity = 240
end

#--------------------------------------------------------------------------
# ? ??
#--------------------------------------------------------------------------
def dispose
super
end
end
#==============================================================================
# ¦ Air_Text (???????????? = ??????????????????)
#==============================================================================
class Air_Text > Window_Base
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def initialize(x, y, designate_text)
super(x-16, y-16, 32 + designate_text.size * 12, 56)
self.opacity = 0
self.back_opacity = 0
self.contents = Bitmap.new(self.width - 32, self.height - 32)
w = self.contents.width
h = self.contents.height
self.contents.font.name = $fontface
self.contents.font.color = normal_color
self.contents.draw_text(0, 0, w, h, designate_text)
end
#--------------------------------------------------------------------------
# ? ??
#--------------------------------------------------------------------------
def dispose
self.contents.clear
super
end
end





et ça c les étapes a faire ensuite:


vous creez un nouveau script nommé "Advanced_Message" au-dessus de main et dans ce script vous mettez le code plus loin ci-dessous.

messages avancés
commandes : (tout ce qui est entre[]doit etre changé par quelque chose)

écriture:
Vous pouvez changer la police d'écriture utilisée dans la boite de message grâce à la commande :
\t[FontName]
exemple : \t[Comic Sans MS]

classe :
Vous pouvez montrer le nom de la classe d'un héros grâce à la commande :
\Class[Hero ID]

exemple : Le héro avec l'ID 1 est de classe :
\Class[1]

faceset :
Vous pouvez mettre une image [faceset] dans la fenêtre de message avec la commande \f[nom de l'image]
L'image doit être au format .png de dimension 96x96 (stockée dans le dossier "Graphics->Picture" du RTP standard).

exemple : \f[girl] --> Exemple d'un faceset.




mais juste a mettre le script, quand j'essaye de tester mon jeu il y a la page titre, et ensuite une boite d'erreur et dit qu'il y a une erreur a la ligne 858 et

Citation:
?????'Advance_Message'? 858??? Type error?????????
nil can't be coerced into Fixnum




qu'est-ce que ça veux dire et qu'est-ce que je doit faire?

la ligne 858 en passant c'est

Citation:
self.cursor_rect.set(8 + @indent + @face_indent, n * 32, @cursor_width, 32)




en fait, est-ce que ce script est bon seulement??? j'aimerais qq petit éclaircissement! merci!
Revenir en haut
Publicité






MessagePosté le: 04/02/2006 04:09:33
MessageSujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
Mi
Noble
Noble

Hors ligne

Inscrit le: 07 Jan 2006
Messages: 298
Points RPG Community: -22
Moyenne de points: -0,07

MessagePosté le: 04/02/2006 04:17:14
MessageSujet du message: message avancée
Répondre en citant

Exclamation Exclamation en fait c le meme que tenrô avait poster plutot, j'viens de m'en rendre compte, alors j'ai essayer avec le sien, et ça fait la meme chose....

(j'ai dut le prendre a la meme place... rtpgamer hein? n'empêche que ça ne marche pas...) quelqu'un la fait et ça a bien marché?
Revenir en haut
Yojimbo
Seigneur tout puissant
Seigneur tout puissant

Hors ligne

Inscrit le: 04 Jan 2006
Messages: 805
Localisation: Grotte du priant volé.
Points RPG Community: 587
Moyenne de points: 0,73

MessagePosté le: 04/02/2006 15:42:02
MessageSujet du message: message avancée
Répondre en citant

C'est le script des messages avancés?
Parce que moi j'utilise celui là : (remplacer le script "Window_message") par celui là :
Code:

# ▼▲▼ XRXS 9. メッセージ表示フルグレードアップ ver..12d ▼▲▼
# Original Script by 桜雅 在土, 和希, RaTTiE
# Script from: http://f26.aaacafe.ne.jp/~xxms/RPGXP_XRXS9.htm
#
#
#
#To found all my NEW features, press CONTROL+F and search for the word "#NEW"
#To found the code where the "Skip Letter By Letter mode", search for "# SKIP"
#
# You can found all the command list on my website
# rmxp.dubealex.com
# Go in the "Script" section.


#==============================================================================
# ■ Window_Message
#==============================================================================
class Window_Message < Window_Selectable
# 一文字ずつ描写
DEFAULT_TYPING_ENABLE = true # falseにすると瞬間表示
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias xrxs9_initialize initialize
def initialize


# IF for any reasons the FONT doesn't appears in your game, this is
# because you are using a different version of RMXP. Look in the class MAIN
# (under this one)
# Go at line #10 and #12, and just copy the word that begins with a $ sign
# and replace what is after the equal sign on lign #27 and 28 of this class.

xrxs9_initialize
# å†ç”Ÿã‚µã‚¦ãƒ³ãƒ‰åãŒãªã„å ´åˆã¯""とする
if $soundname_on_speak == nil then
$soundname_on_speak = ""
end
# 外字ファイルパス設定
$gaiji_file = "./Graphics/Gaiji/sample.png"
# 外字データ読み込み
if FileTest.exist?($gaiji_file)
@gaiji_cache = Bitmap.new($gaiji_file)
else
@gaigi_cache = nil
end
# 文字透過転送用バッファ
@opacity_text_buf = Bitmap.new(32, 32)
end
#--------------------------------------------------------------------------
# ● メッセージ終了処理
#--------------------------------------------------------------------------
alias xrxs9_terminate_message terminate_message
def terminate_message
if @name_window_frame != nil
@name_window_frame.dispose
@name_window_frame = nil
end
if @name_window_text != nil
@name_window_text.dispose
@name_window_text = nil
end
xrxs9_terminate_message
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
# 初期化
self.contents.clear
self.contents.font.color = normal_color
self.contents.font.name = $fontface
@x = @y = @max_x = @max_y = @indent = @lines = 0
@face_indent = 0
@opacity = 255
@cursor_width = 0
@write_speed = 0
@write_wait = 0
@mid_stop = false
@face_file = nil
# @popchar が -2 ã®å ´åˆã€æ¨™æº–ä½ç½®ã€‚-1ã®å ´åˆã€æ–‡å­—ã‚»ãƒ³ã‚¿ãƒ¼ã€‚
# 0ä»¥ä¸Šã®å ´åˆã€€ã‚­ãƒ£ãƒ©ãƒãƒƒãƒ—ã€‚0は主人公、1以降はイベント。
@popchar = -2
# 選択肢なら字下げを行う
if $game_temp.choice_start == 0
@x = 8
end
# è¡¨ç¤ºå¾…ã¡ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒãƒ»ã‚‹å ´åˆ
if $game_temp.message_text != nil
@now_text = $game_temp.message_text
# 顔表示指定\Fが・るか?
if (/\A\\[Ff]\[(.+?)\]/.match(@now_text))!=nil then
# ファイルチェック
if FileTest.exist?("Graphics/Pictures/" + $1 + ".png")
# 顔グラを描画
@face_file = $1 + ".png"
self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))
# 全行 128ピクセルのインデントを入れる。
@x = @face_indent = 128
end
@now_text.gsub!(/\\[Ff]\[(.*?)\]/) { "" }
end
# 制御文字処理
begin
last_text = @now_text.clone
# \Vを独自ルーチンに変更(è¿½åŠ éƒ¨åˆ†)
@now_text.gsub!(/\\[Vv]\[([IiWwAaSs]?)([0-9]+)\]/) { convart_value($1, $2.to_i) }
end until @now_text == last_text
@now_text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
$game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
end

#NEW
#Dubealex Show Monster Name Feature
@now_text.gsub!(/\\[Mm]\[([0-9]+)\]/) do
$data_enemies[$1.to_i] != nil ? $data_enemies[$1.to_i].name : ""
end
#End new command

#NEW
#Dubealex Show Item Price Feature
@now_text.gsub!(/\\[Pp]rice\[([0-9]+)\]/) do
$data_items[$1.to_i] != nil ? $data_items[$1.to_i].price : ""
end
#End new command

#NEW
#Dubealex Show Hero Class Name Feature
@now_text.gsub!(/\\[Cc]lass\[([0-9]+)\]/) do
$data_classes[$data_actors[$1.to_i].class_id] != nil ? $data_classes[$data_actors[$1.to_i].class_id].name : ""
end
#End new command

#NEW
#Dubealex Show Current Map Name Feature
@now_text.gsub!(/\\[Mm]ap/) do
$game_map.name != nil ? $game_map.name : ""
end
#End new command

# \nameが・るか?
name_window_set = false
if (/\\[Nn]ame\[(.+?)\]/.match(@now_text)) != nil
# 値を設定
name_window_set = true
name_text = $1
# \name[]部分を削除
@now_text.sub!(/\\[Nn]ame\[(.*?)\]/) { "" }
end
# ウィンドウ位置判定
if (/\\[Pp]\[([-1,0-9]+)\]/.match(@now_text))!=nil then
@popchar = $1.to_i
if @popchar == -1
@x = @indent = 48
@y = 4
end
@now_text.gsub!(/\\[Pp]\[([-1,0-9]+)\]/) { "" }
end
# ウィンドウ幅の取得
@max_choice_x = 0
if @popchar >= 0
@text_save = @now_text.clone
@max_x = 0
@max_y = 4
for i in 0..3
line = @now_text.split(/\n/)[3-i]
@max_y -= 1 if line == nil and @max_y <= 4-i
next if line == nil
line.gsub!(/\\\w\[(\w+)\]/) { "" }
cx = contents.text_size(line).width
@max_x = cx if cx > @max_x
if i >= $game_temp.choice_start
@max_choice_x = cx if cx > @max_choice_x
end
end
self.width = @max_x + 32 + @face_indent
self.height = (@max_y - 1) * 32 + 64
@max_choice_x -= 68
@max_choice_x -= @face_indent*216/128
else
@max_x = self.width - 32 - @face_indent
for i in 0..3
line = @now_text.split(/\n/)[i]
next if line == nil
line.gsub!(/\\\w\[(\w+)\]/) { "" }
cx = contents.text_size(line).width
if i >= $game_temp.choice_start
@max_choice_x = cx if cx > @max_choice_x
end
end
@max_choice_x += 8
end
# 選択肢ならカーソルの幅を更新
@cursor_width = 0
#if @lines >= $game_temp.choice_start
# @cursor_width = [@cursor_width, @max_choice_x - @face_indent].max
#end
# 便宜上、"\\\\" を "\000" に変換
@now_text.gsub!(/\\\\/) { "\000" }
# "\\C" を "\001" に、"\\G" を "\002" に、
# "\\S" を "\003" に、"\\A" を "\004" に変換
@now_text.gsub!(/\\[Cc]\[([0123456789ABCDEF#]+)\]/) { "\001[#{$1}]" }
@now_text.gsub!(/\\[Gg]/) { "\002" }
@now_text.gsub!(/\\[Ss]\[([0-9]+)\]/) { "\003[#{$1}]" }
@now_text.gsub!(/\\[Aa]\[(.*?)\]/) { "\004[#{$1}]" }

#NEW
#Dubealex Font Change Features
@now_text.gsub!(/\\[Tt]\[(.*?)\]/) { "\050[#{$1}]" }
#End of dubealex feature

@now_text.gsub!(/\\[.]/) { "\005" }
@now_text.gsub!(/\\[|]/) { "\006" }
# 競合すると何かと気まずいので、\016以降を使用する
@now_text.gsub!(/\\[>]/) { "\016" }
@now_text.gsub!(/\\[<]/) { "\017" }
@now_text.gsub!(/\\[!]/) { "\020" }
@now_text.gsub!(/\\[~]/) { "\021" }
@now_text.gsub!(/\\[Ee]\[([0-9]+)\]/) { "\022[#{$1}]" }
# インデント設定(è¿½åŠ éƒ¨åˆ†)
@now_text.gsub!(/\\[Ii]/) { "\023" }
# テキスト透過率指定(è¿½åŠ éƒ¨åˆ†)
@now_text.gsub!(/\\[Oo]\[([0-9]+)\]/) { "\024[#{$1}]" }
# テキストサイズ指定(è¿½åŠ éƒ¨åˆ†)
@now_text.gsub!(/\\[Hh]\[([0-9]+)\]/) { "\025[#{$1}]" }
# 空白挿入(è¿½åŠ éƒ¨åˆ†)
@now_text.gsub!(/\\[Bb]\[([0-9]+)\]/) { "\026[#{$1}]" }
# ルビ表示(è¿½åŠ éƒ¨åˆ†)
@now_text.gsub!(/\\[Rr]\[(.*?)\]/) { "\027[#{$1}]" }
# ここで一旦ウィンドウ位置更新
reset_window
# \nameが・るか?
if name_window_set
# オフセット位置
off_x = 0
off_y = -10
# æž ã ã‘ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã®ä½œæˆ(余白を 2 に設定)
space = 2
x = self.x + off_x - space / 2
y = self.y + off_y - space / 2
w = self.contents.text_size(name_text).width + 8 + space
h = 26 + space
@name_window_frame = Window_Frame.new(x, y, w, h)
@name_window_frame.z = self.z + 1
# 擬似的な空中文字描写ウィンドウを作成
x = self.x + off_x + 4
y = self.y + off_y
@name_window_text = Air_Text.new(x, y, name_text)
@name_window_text.z = self.z + 2
end
end
# ウィンドウを更新
reset_window
# é¸æŠžè‚¢ã®å ´åˆ
if $game_temp.choice_max > 0
@item_max = $game_temp.choice_max
self.active = true
self.index = 0
end
# æ•°å€¤å…¥åŠ›ã®å ´åˆ
if $game_temp.num_input_variable_id > 0
digits_max = $game_temp.num_input_digits_max
number = $game_variables[$game_temp.num_input_variable_id]
@input_number_window = Window_InputNumber.new(digits_max)
@input_number_window.number = number
@input_number_window.x = self.x + 8
@input_number_window.y = self.y + $game_temp.num_input_start * 32
end
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
super
# ãƒ•ã‚§ãƒ¼ãƒ‰ã‚¤ãƒ³ã®å ´åˆ
if @fade_in
self.contents_opacity += 24
if @input_number_window != nil
@input_number_window.contents_opacity += 24
end
if self.contents_opacity == 255
@fade_in = false
end
return
end
@now_text = nil if @now_text == "" # 変換
# è¡¨ç¤ºå¾…ã¡ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒãƒ»ã‚‹å ´åˆ
if @now_text != nil and @mid_stop == false
if @write_wait > 0
@write_wait -= 1
return
end
text_not_skip = DEFAULT_TYPING_ENABLE
while true
# 最大 x y の保存。
@max_x = @x if @max_x < @x
@max_y = @y if @max_y < @y
# c に 1 文字を取得 (文字が取得できなくなるまでループ)
if (c = @now_text.slice!(/./m)) != nil
# \\ ã®å ´åˆ
if c == "\000"
# 本来の文字に戻す
c = "\\"
end
# \C[n] ã®å ´åˆ

if c == "\001"
@now_text.sub!(/\[([0123456789ABCDEF#]+)\]/, "")
temp_color = $1
color = temp_color.to_i
leading_x = temp_color.to_s.slice!(/./m)
if leading_x == "#"
self.contents.font.color = hex_color(temp_color)
next
end
if color >= 0 and color <= 7
self.contents.font.color = text_color(color)
end
next
end

# \G ã®å ´åˆ
if c == "\002"
# ゴールドウィンドウを作成
if @gold_window == nil and @popchar <= 0
@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
# 次の文字へ
c = ""
end
# \S[n] ã®å ´åˆ
if c == "\003"
# 文字色を変更
@now_text.sub!(/\[([0-9]+)\]/, "")
speed = $1.to_i
if speed >= 0 and speed <= 19
@write_speed = speed
end
# 次の文字へ
c = ""
end
# \A[soundname] ã®å ´åˆ
if c == "\004"
# 再生ファイルを変更するための準備
@now_text.sub!(/\[(.*?)\]/, "")
buftxt = $1.dup.to_s
# 再生ファイル名に"/"が・るか?
if buftxt.match(/\//) == nil and buftxt != "" then
# なければ"Audio/SE/"を結合する
$soundname_on_speak = "Audio/SE/" + buftxt
else
# ・ればそのままコピー
$soundname_on_speak = buftxt.dup
end
# 次の文字へ
c = ""
elsif c == "\004"
# 次の文字へ
c = ""
end
# \. ã®å ´åˆ
if c == "\005"
@write_wait += 5
c = ""
end
# \| ã®å ´åˆ
if c == "\006"
@write_wait += 20
c = ""
end
# \> ã®å ´åˆ
if c == "\016"
text_not_skip = false
c = ""
end
# \<ã®å ´åˆ
if c == "\017"
text_not_skip = true
c = ""
end
# \!ã®å ´åˆ
if c == "\020"
@mid_stop = true
c = ""
end
# \~ã®å ´åˆ
if c == "\021"
terminate_message
return
end
# \Iã®å ´åˆ(è¿½åŠ éƒ¨åˆ†)
if c == "\023"
# 今の@xをインデント位置に設定
@indent = @x
c = ""
end
# \Oã®å ´åˆ(è¿½åŠ éƒ¨åˆ†)
if c == "\024"
@now_text.sub!(/\[([0-9]+)\]/, "")
@opacity = $1.to_i
color = self.contents.font.color
self.contents.font.name = $fontface
self.contents.font.color = Color.new(color.red, color.green, color.blue, color.alpha * @opacity / 255)
c = ""
end
# \Hã®å ´åˆ(è¿½åŠ éƒ¨åˆ†)
if c == "\025"
@now_text.sub!(/\[([0-9]+)\]/, "")
self.contents.font.size = [[$1.to_i, 6].max, 32].min
c = ""
end
# \Bã®å ´åˆ(è¿½åŠ éƒ¨åˆ†)
if c == "\026"
@now_text.sub!(/\[([0-9]+)\]/, "")
@x += $1.to_i
c = ""
end

#NEW
#Dubealex Font Change Command
if c == "\050"
@now_text.sub!(/\[(.*?)\]/, "")
buftxt = $1.dup.to_s
if buftxt.match(/\//) == nil and buftxt != "" then
self.contents.font.name = buftxt
end
c = ""
end
#end of font change command

# \Rã®å ´åˆ(è¿½åŠ éƒ¨åˆ†)
if c == "\027"
@now_text.sub!(/\[(.*?)\]/, "")
# 文字を描画
@x += ruby_draw_text(self.contents, @x, @y * line_height + (line_height - self.contents.font.size), $1, @opacity)
# 文字描写のSEを演奏
if $soundname_on_speak != ""
Audio.se_play($soundname_on_speak)
end
c = ""
end
# ã‚¢ã‚¤ã‚³ãƒ³æç”»ç”¨ã‚·ãƒ¼ã‚±ãƒ³ã‚¹ã®å ´åˆ(è¿½åŠ éƒ¨åˆ†)
if c == "\030"
# アイコンファイル名を取得
@now_text.sub!(/\[(.*?)\]/, "")
# アイコンを描画
self.contents.blt(@x , @y * line_height + 8, RPG::Cache.icon($1), Rect.new(0, 0, 24, 24))
# 文字描写のSEを演奏
if $soundname_on_speak != ""
Audio.se_play($soundname_on_speak)
end
@x += 24
# 次の文字へ
c = ""
end
# æ”¹è¡Œæ–‡å­—ã®å ´åˆ
if c == "\n"
# y に 1 ã‚’åŠ ç®—
@lines += 1
@y += 1
@x = 0 + @indent + @face_indent
# 選択肢なら字下げを行う
if @lines >= $game_temp.choice_start
@x = 8 + @indent + @face_indent
# カーソルの更新
@cursor_width = @max_choice_x
end
# 次の文字へ
c = ""
end
# å¤–å­—è¡¨ç¤ºã®å ´åˆ
if c == "\022"
# []部分の除去
@now_text.sub!(/\[([0-9]+)\]/, "")
# 外字を表示
@x += gaiji_draw(4 + @x, @y * line_height + (line_height - self.contents.font.size), $1.to_i)
# 次の文字へ
c = ""
end
if c != ""
# 文字を描画
self.contents.draw_text(0+@x, 32 * @y, 40, 32, c)
@x += self.contents.text_size(c).width
# 文字描写のSEを演奏
if $soundname_on_speak != "" then
Audio.se_play($soundname_on_speak)
end
end
# Bãƒœã‚¿ãƒ³ãŒæŠ¼ã•ã‚ŒãŸå ´åˆ
# SKIP
# This allow you to SKIP the letter by letter using a button
# At your own choice
# Here's how to customize it:
# Replace the letter in the end of the line "if Input.trigger?(Input::C)"
# That is on line #512
# By the letter of your choice:
#
# B = Escape, 0 (On The NumPad), X
# C = Enter, Space Bar and C
# A = Shift, Z
if Input.press?(Input::C)
text_not_skip = false
end
else
text_not_skip = true
break
end
# 終了判定
if text_not_skip
break
end
end
@write_wait += @write_speed
return
end
# æ•°å€¤å…¥åŠ›ä¸­ã®å ´åˆ
if @input_number_window != nil
@input_number_window.update
# 決定
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
$game_variables[$game_temp.num_input_variable_id] =
@input_number_window.number
$game_map.need_refresh = true
# 数値入力ウィンドウを解放
@input_number_window.dispose
@input_number_window = nil
terminate_message
end
return
end
# ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸è¡¨ç¤ºä¸­ã®å ´åˆ
if @contents_showing
# 選択肢の表示中でなければポーズサインを表示
if $game_temp.choice_max == 0
self.pause = true
end


if Input.trigger?(Input::B)
if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
$game_system.se_play($data_system.cancel_se)
$game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
terminate_message
end
end

if Input.trigger?(Input::C)
if $game_temp.choice_max > 0
$game_system.se_play($data_system.decision_se)
$game_temp.choice_proc.call(self.index)
end
if @mid_stop
@mid_stop = false
return
else
terminate_message
end
end
return
end
# ãƒ•ã‚§ãƒ¼ãƒ‰ã‚¢ã‚¦ãƒˆä¸­ä»¥å¤–ã§è¡¨ç¤ºå¾…ã¡ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‹é¸æŠžè‚¢ãŒãƒ»ã‚‹å ´åˆ
if @fade_out == false and $game_temp.message_text != nil
@contents_showing = true
$game_temp.message_window_showing = true
refresh
Graphics.frame_reset
self.visible = true
self.contents_opacity = 0
if @input_number_window != nil
@input_number_window.contents_opacity = 0
end
@fade_in = true
return
end
# è¡¨ç¤ºã™ã¹ããƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒãªã„ãŒã€ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ãŒå¯è¦–çŠ¶æ…‹ã®å ´åˆ
if self.visible
@fade_out = true
self.opacity -= 48
if self.opacity == 0
self.visible = false
@fade_out = false
$game_temp.message_window_showing = false
end
return
end
end
#--------------------------------------------------------------------------
# ● キャラクターの取得
# parameter : パラメータ
#--------------------------------------------------------------------------
def get_character(parameter)
# パラメータで分岐
case parameter
when 0 # プレイヤー
return $game_player
else # 特定のイベント
events = $game_map.events
return events == nil ? nil : events[parameter]
end
end
#--------------------------------------------------------------------------
# ● ウィンドウの位置と不透明度の設定
#--------------------------------------------------------------------------
def reset_window
# 判定
if @popchar >= 0
events = $game_map.events
if events != nil
character = get_character(@popchar)
x = [[character.screen_x - 0 - self.width / 2, 4].max, 636 - self.width].min
y = [[character.screen_y - 48 - self.height, 4].max, 476 - self.height].min
self.x = x
self.y = y
end
elsif @popchar == -1
self.x = -4
self.y = -4
self.width = 648
self.height = 488
else
if $game_temp.in_battle
self.y = 16
else
case $game_system.message_position
when 0 # 上
self.y = 16
when 1 # 中
self.y = 160
when 2 # 下
self.y = 304
end
self.x = 80
if @face_file == nil
self.width = 480
else
self.width = 600
self.x -= 60
end
self.height = 160
end
end
self.contents = Bitmap.new(self.width - 32, self.height - 32)
self.contents.font.color = normal_color
self.contents.font.name = $fontface
if @face_file != nil
self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))
end
if @popchar == -1
self.opacity = 255
self.back_opacity = 0
elsif $game_system.message_frame == 0
self.opacity = 255
self.back_opacity = 160
else
self.opacity = 0
self.back_opacity = 160
end
end
#--------------------------------------------------------------------------
# ● 外字描画
#--------------------------------------------------------------------------
# x   :x座標
# y   :y座標
# num  :外字番号
# 返り値:外字幅(@xå¢—åŠ å€¤)
#--------------------------------------------------------------------------
def gaiji_draw(x, y, num)
# å¤–å­—ãƒ‡ãƒ¼ã‚¿ãŒå­˜åœ¨ã—ãªã„å ´åˆã¯ä½•ã‚‚ã—ãªã„
if @gaiji_cache == nil
return 0
else
# æŒ‡å®šã—ãŸå¤–å­—ãŒã‚­ãƒ£ãƒƒã‚·ãƒ¥ç¯„å›²ã‚’è¶…ãˆã¦ã„ã‚‹å ´åˆã¯ä½•ã‚‚ã—ãªã„
if @gaiji_cache.width < num * 24
return 0
end

# 文字サイズを計算
if self.contents.font.size >= 20 and self.contents.font.size <= 24
size = 24
else
size = self.contents.font.size * 100 * 24 / 2200
end

# 外字データをstretch_bltで転送
self.contents.stretch_blt(Rect.new(x, y, size, size), @gaiji_cache, Rect.new(num * 24, 0, 24, 24))

# 文字描写のSEを演奏
if $soundname_on_speak != "" then
Audio.se_play($soundname_on_speak)
end

# 文字サイズを返す
return size
end
end
#--------------------------------------------------------------------------
# ● line_height
#--------------------------------------------------------------------------
# 返り値:行の高さ(@yå¢—åŠ å€¤)を返します。
#--------------------------------------------------------------------------
def line_height
# 現状、選択肢等に対応ができない為、自動的に32を返します。
return 32

# 文字サイズを計算
if self.contents.font.size >= 20 and self.contents.font.size <= 24
return 32
else
return self.contents.font.size * 15 / 10
end
end
#--------------------------------------------------------------------------
# ● ルビ文字描画
#--------------------------------------------------------------------------
# target :描画対象。Bitmapクラスを指定。
# x :x座標
# y :y座標
# str  :描画文字列。本文,ルビの形式で入力。
#      ,区切りが2ã¤ä»¥ä¸Šãƒ»ã£ãŸå ´åˆã¯è‡ªå‹•çš„ã«ç„¡è¦–ã•ã‚Œã‚‹ã€‚
# opacity:透過率(0~255)
# 返り値 :文字幅(@xå¢—åŠ å€¤)。
#--------------------------------------------------------------------------
def ruby_draw_text(target, x, y, str,opacity)
# フォントサイズをバックアップしておく
sizeback = target.font.size
# ルビサイズの計算
target.font.size * 3 / 2 > 32 ? rubysize = 32 - target.font.size : rubysize = target.font.size / 2
rubysize = [rubysize, 6].max

# opacityã«è¦å®šå€¤ä»¥ä¸Šã®å€¤ãŒå…¥ã£ã¦ã„ã‚‹å ´åˆã¯ä¿®æ­£ã€‚
opacity = [[opacity, 0].max, 255].min
# strをsplitで分割し、split_sã«æ ¼ç´
split_s = str.split(/,/)

# split_sがnilã®å ´åˆã¯""にしておく(誤動作防止)
split_s[0] == nil ? split_s[0] = "" : nil
split_s[1] == nil ? split_s[1] = "" : nil

# heightとwidthを計算
height = sizeback + rubysize
width = target.text_size(split_s[0]).width

# バッファ用の幅計算(ルビの幅が本文の幅を越える可能性が・る為)
target.font.size = rubysize
ruby_width = target.text_size(split_s[1]).width
target.font.size = sizeback

buf_width = [target.text_size(split_s[0]).width, ruby_width].max

# 本文の描画幅とルビの描画幅の差を1/2ã«ã—ã¦å¤‰æ•°ã«æ ¼ç´(後で使用)
width - ruby_width != 0 ? sub_x = (width - ruby_width) / 2 : sub_x = 0

# opacityが255(透過なし)ã®å ´åˆã¯é€šå¸¸æç”»
if opacity == 255
# ルビの描画
target.font.size = rubysize
target.draw_text(x + sub_x, y - target.font.size, target.text_size(split_s[1]).width, target.font.size, split_s[1])
target.font.size = sizeback
# 本文の描画
target.draw_text(x, y, width, target.font.size, split_s[0])
return width
else
# 表示テキストのheight、widthãŒãƒãƒƒãƒ•ã‚¡ã‚µã‚¤ã‚ºã‚’ä¸Šå›žã‚‹å ´åˆã¯
# バッファを再生成する。
if @opacity_text_buf.width < buf_width or @opacity_text_buf.height < height
@opacity_text_buf.dispose
@opacity_text_buf = Bitmap.new(buf_width, height)
# ãã†ã§ãªã„å ´åˆã¯ãƒãƒƒãƒ•ã‚¡ã‚¯ãƒªã‚¢ã€‚
else
@opacity_text_buf.clear
end
# バッファにテキスト描画
# ルビの描画
@opacity_text_buf.font.size = rubysize
@opacity_text_buf.draw_text(0 , 0, buf_width, rubysize, split_s[1], 1)
@opacity_text_buf.font.size = sizeback
# 本文の描画
@opacity_text_buf.draw_text(0 , rubysize, buf_width, sizeback, split_s[0], 1)
# ãƒ«ãƒ“ã®å¹…ãŒæœ¬æ–‡ã®å¹…ã‚’ä¸‹å›žã‚‹å ´åˆ
if sub_x >= 0
target.blt(x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity)
# ãƒ«ãƒ“ã®å¹…ãŒæœ¬æ–‡ã®å¹…ã‚’ä¸Šå›žã‚‹å ´åˆ
else
target.blt(x + sub_x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity)
end
# 文字サイズを返す
return width
end
end
#--------------------------------------------------------------------------
# ● \V変換
#--------------------------------------------------------------------------
# option ï¼šã‚ªãƒ—ã‚·ãƒ§ãƒ³ã€‚ç„¡æŒ‡å®šåˆã¯è¦å®šå¤–ã®å ´åˆã¯indexのユーザ変数値を返す。
# index :インデックス
# 返り値 :変換結果(アイコン表示用シーケンス込み)
#--------------------------------------------------------------------------
def convart_value(option, index)
# optionがnilã®å ´åˆã¯""に直す(誤動作防止)
option == nil ? option = "" : nil

# optionはdowncaseしておく。
option.downcase!

# \030はアイコン表示用のシーケンス。\030[アイコンファイル名]で定義。
case option
when "i"
unless $data_items[index].name == nil
r = sprintf("\030[%s]%s", $data_items[index].icon_name, $data_items[index].name)
end
when "w"
unless $data_weapons[index].name == nil
r = sprintf("\030[%s]%s", $data_weapons[index].icon_name, $data_weapons[index].name)
end
when "a"
unless $data_armors[index].name == nil
r = sprintf("\030[%s]%s", $data_armors[index].icon_name, $data_armors[index].name)
end
when "s"
unless $data_skills[index].name == nil
r = sprintf("\030[%s]%s", $data_skills[index].icon_name, $data_skills[index].name)
end
else
r = $game_variables[index]
end

r == nil ? r = "" : nil
return r
end
#--------------------------------------------------------------------------
# ● 解放
#--------------------------------------------------------------------------
def dispose
terminate_message

# 外字キャッシュ開放
if @gaiji_cache != nil
unless @gaiji_cache.disposed?
@gaiji_cache.dispose
end
end

# 文字透過転送用バッファ開放
unless @opacity_text_buf.disposed?
@opacity_text_buf.dispose
end

$game_temp.message_window_showing = false
if @input_number_window != nil
@input_number_window.dispose
end
super
end
#--------------------------------------------------------------------------
# ● カーソルの矩形更新
#--------------------------------------------------------------------------
def update_cursor_rect
if @index >= 0
n = $game_temp.choice_start + @index
self.cursor_rect.set(8 + @indent + @face_indent, n * 32, @cursor_width, 32)
else
self.cursor_rect.empty
end
end
end
#==============================================================================
# ■ Window_Frame (æž ã ã‘ã§ä¸­èº«ã®ç„¡ã„ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦)
#==============================================================================
class Window_Frame < Window_Base
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(x, y, width, height)
super(x, y, width, height)
self.contents = nil
#self.back_opacity = 240
end
#--------------------------------------------------------------------------
# ● 解放
#--------------------------------------------------------------------------
def dispose
super
end
end
#==============================================================================
# ■ Air_Text (何も無いところに文字描写 = æž ã®ç„¡ã„çž¬é–“è¡¨ç¤ºãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦)
#==============================================================================
class Air_Text < Window_Base
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(x, y, designate_text)
super(x-16, y-16, 32 + designate_text.size * 12, 56)
self.opacity = 0
self.back_opacity = 0
self.contents = Bitmap.new(self.width - 32, self.height - 32)
w = self.contents.width
h = self.contents.height
self.contents.font.name = $fontface
self.contents.font.color = normal_color
self.contents.draw_text(0, 0, w, h, designate_text)
end
#--------------------------------------------------------------------------
# ● 解放
#--------------------------------------------------------------------------
def dispose
self.contents.clear
super
end
end
Revenir en haut
Visiter le site web du posteur
Mi
Noble
Noble

Hors ligne

Inscrit le: 07 Jan 2006
Messages: 298
Points RPG Community: -22
Moyenne de points: -0,07

MessagePosté le: 04/02/2006 20:13:16
MessageSujet du message: message avancée
Répondre en citant

Ouin.... je l'essais pi ça marche pas plus....
quand je veux essayer mon jeux ça écris que:

Citation:
Undefined methode 'termitate_message' for classe 'Window_Message'


je fait quoi avec ça?
Revenir en haut
Yojimbo
Seigneur tout puissant
Seigneur tout puissant

Hors ligne

Inscrit le: 04 Jan 2006
Messages: 805
Localisation: Grotte du priant volé.
Points RPG Community: 587
Moyenne de points: 0,73

MessagePosté le: 05/02/2006 11:43:21
MessageSujet du message: message avancée
Répondre en citant

Tu as un script nommé "termitate_message"?
Revenir en haut
Visiter le site web du posteur
Mi
Noble
Noble

Hors ligne

Inscrit le: 07 Jan 2006
Messages: 298
Points RPG Community: -22
Moyenne de points: -0,07

MessagePosté le: 05/02/2006 17:28:05
MessageSujet du message: message avancée
Répondre en citant

..................euh, non, j'crois pas.......



y fallait tu? ........ Confused
Revenir en haut
Yojimbo
Seigneur tout puissant
Seigneur tout puissant

Hors ligne

Inscrit le: 04 Jan 2006
Messages: 805
Localisation: Grotte du priant volé.
Points RPG Community: 587
Moyenne de points: 0,73

MessagePosté le: 05/02/2006 20:05:34
MessageSujet du message: message avancée
Répondre en citant

Euh ben non apparament...
Attends, je vais esayer de prendre ton adresse MSN pour voir ça Wink.

(tu es quebecquoise ou quelque chose comme ça?)
Revenir en haut
Visiter le site web du posteur
Seb076
Soldat
Soldat

Hors ligne

Inscrit le: 12 Jan 2006
Messages: 220
Localisation: quelque part dans les terres oublier des highland
Points RPG Community: 5
Moyenne de points: 0,02

MessagePosté le: 06/02/2006 10:16:52
MessageSujet du message: message avancée
Répondre en citant

lol

Mi, pense a désactiver les smiley lorsque tu poste un scripte stp

thank you
_________________


Revenir en haut
TeNRô
Apprenti
Apprenti

Hors ligne

Inscrit le: 07 Jan 2006
Messages: 74
Points RPG Community: 1
Moyenne de points: 0,01

MessagePosté le: 06/02/2006 10:29:50
MessageSujet du message: message avancée
Répondre en citant

Yojimbo il en profite pour avoir l'adresse msn des filles :'(

NONNNNN Mi est ma proie ! heu .... pardon tit copain de Mi ... non non ta mal compris ... ah ... bonjour chérie, non toi aussi ta mal entendu ! non mais arretez AU SECOURRRRRRRS

* pour certaine raison violence et pour ne pas heurté l'esprit du jeune public la scène suivante sera censuré *

Ok je sors

Neutral si jamais vous trouvez la solution n'oubliez pas de poster
Revenir en haut
Yojimbo
Seigneur tout puissant
Seigneur tout puissant

Hors ligne

Inscrit le: 04 Jan 2006
Messages: 805
Localisation: Grotte du priant volé.
Points RPG Community: 587
Moyenne de points: 0,73

MessagePosté le: 06/02/2006 19:43:32
MessageSujet du message: message avancée
Répondre en citant

T'inquiète TeNRô, j'ai d'autres chats à fouetter Wink.
Revenir en haut
Visiter le site web du posteur
Mi
Noble
Noble

Hors ligne

Inscrit le: 07 Jan 2006
Messages: 298
Points RPG Community: -22
Moyenne de points: -0,07

MessagePosté le: 08/02/2006 16:51:51
MessageSujet du message: message avancée
Répondre en citant

euh...... je pense en avoir manquer un bout là moi^^

et pour les smiley, c vrai que c'était ps fort Laughing
Revenir en haut
Mi
Noble
Noble

Hors ligne

Inscrit le: 07 Jan 2006
Messages: 298
Points RPG Community: -22
Moyenne de points: -0,07

MessagePosté le: 10/02/2006 05:28:22
MessageSujet du message: message avancée
Répondre en citant

A oui, merci a yojimbo pour m'avoir envoyer un exemple, et par la meme occasion le script Laughing

Mais je voulais juste préciser que quand j'ai essayer avec un nouveau projet de le faire marcher avec ton script, j'ai vue que tu avais 2 script (oui oui, pas un mais bien deux) qui s'appelait Window_Message (dans le projet tu m'a envoyer), donc j'ai rajouter les deux et seulement là ça a fonctionné.

Petite précision quoi Wink

a oui, j'oubliais, si j'dit des choses pi que vs les catché pas, gêner vous pas de me traiter d'québecoise Laughing
Revenir en haut
Seb076
Soldat
Soldat

Hors ligne

Inscrit le: 12 Jan 2006
Messages: 220
Localisation: quelque part dans les terres oublier des highland
Points RPG Community: 5
Moyenne de points: 0,02

MessagePosté le: 10/02/2006 10:10:00
MessageSujet du message: message avancée
Répondre en citant

Non compri dsl

Quelqu'un aurait un traducteur ??

non, elle etait minable Ok je sors

@+
_________________


Revenir en haut
Mi
Noble
Noble

Hors ligne

Inscrit le: 07 Jan 2006
Messages: 298
Points RPG Community: -22
Moyenne de points: -0,07

MessagePosté le: 11/02/2006 23:45:18
MessageSujet du message: message avancée
Répondre en citant

Ennuyé le pauvre

bon, là je suis un peu confuse...... j'ai essayer tout le script, tout marchais bien... je l'intègre a mon projet, j'ajoute les images a mes message, et quand j'essais le jeu, quand la boite de dialogue ouvre et qu'il y a une image, le jeu gêle deux seconde et ferme tout seul..... est-ce que c'est la taille de l'image qui n'est pas correcte? (parce qu'en plus, dans les petite image, pendant le jeu la qualité n'est pas très bonne...)
Revenir en haut
Seb076
Soldat
Soldat

Hors ligne

Inscrit le: 12 Jan 2006
Messages: 220
Localisation: quelque part dans les terres oublier des highland
Points RPG Community: 5
Moyenne de points: 0,02

MessagePosté le: 06/03/2006 12:17:47
MessageSujet du message: message avancée
Répondre en citant

C'est bizare, moi j'ai essayer est il n'y a pas de probléme (Est-ce parce que j'ai modifier quelque peut le script??) mais au sinon pour les images, si elle ne sont pas a la bonne taille, tu n'en verra qu'une partie.
Donc le probléme est ailleurs ...... jue vais essayer de voir avec le script original et je te redit ca dans quelque temps
_________________


Revenir en haut
Contenu Sponsorisé






MessagePosté le: 03/12/2016 11:40:05
MessageSujet du message: message avancée

Revenir en haut
Montrer les messages depuis:   
RPG Community Index du Forum -> RPG Maker -> Scripts RPG Maker XP Toutes les heures sont au format GMT + 2 Heures
Poster un nouveau sujet   Répondre au sujet
Page 1 sur 1
Sauter vers:  

 

Portail | Index | Panneau d’administration | Créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
phpBB
Template by BMan1
Traduction par : phpBB-fr.com