Hilfe beim Faceset
Hallo Leute,
wir machen ein Projekt und benötigen dringend Hilfe.
Und zwar wollen wir in unserem Projekt ein Facescript eingebaut haben, aber uns fehlen noch ein paar Befehle:
- das Positionieren des Facesets über dem Textfeld
- das Textfeld auf eine bestimmte Breite reduzieren und ebenfalls positionieren zu können
Es ist so aufgebaut, dass das Faceset links steht und rechts eben dann der Text erscheinen soll, ohne über das Bild zu laufen.
Hier eine Vorschau davon:

Wie man sieht, haut das noch nicht so wirklich hin :/
Für Hilfe wären wir sehr dankbar.
wir machen ein Projekt und benötigen dringend Hilfe.
Und zwar wollen wir in unserem Projekt ein Facescript eingebaut haben, aber uns fehlen noch ein paar Befehle:
- das Positionieren des Facesets über dem Textfeld
- das Textfeld auf eine bestimmte Breite reduzieren und ebenfalls positionieren zu können
Es ist so aufgebaut, dass das Faceset links steht und rechts eben dann der Text erscheinen soll, ohne über das Bild zu laufen.
Hier eine Vorschau davon:

Wie man sieht, haut das noch nicht so wirklich hin :/
Für Hilfe wären wir sehr dankbar.
Welches Messagesystem benutzt ihr?
UMS, AMS, oder ein komplett eigenes System?
UMS, AMS, oder ein komplett eigenes System?

Wie Daylen schon fragte, welches Skript genau verwendet ihr denn?
Am besten zusätzlich zum Namen noch ein Link zu dem von euch verwendeten Skript.
Vieleicht gibt es in dem Skript schon die Möglichkeit das anzupassen.
Edit: Wer ist wir? Oder meintest du das königliche Wir
(Frage nur aus Spass und Neugier)
Gruß Bex
Am besten zusätzlich zum Namen noch ein Link zu dem von euch verwendeten Skript.
Vieleicht gibt es in dem Skript schon die Möglichkeit das anzupassen.
Edit: Wer ist wir? Oder meintest du das königliche Wir
(Frage nur aus Spass und Neugier)Gruß Bex
Also das wäre der Skript - ich weiß leider gerade aktuell nicht genau, wo wir den herhaben bzw. finde meine Unterlagen dazu nicht x__x
Wir haben's leider auch noch nicht in die Credits gehauen, weswegen ich da gerade auch nichts habe.
Wie man sieht, ist der auch schon ein bisschen sehr unordentlich geworden...
Und wegen dem Wir: Ich bastel mit einer Freundin an dem Spiel herum, deswegen
Beim Skripten fliegen wir nur leider beide raus...
Wir haben's leider auch noch nicht in die Credits gehauen, weswegen ich da gerade auch nichts habe.
Wie man sieht, ist der auch schon ein bisschen sehr unordentlich geworden...
Und wegen dem Wir: Ich bastel mit einer Freundin an dem Spiel herum, deswegen

Beim Skripten fliegen wir nur leider beide raus...
Zitat
#==============================================================================
# ** Window_Message
#------------------------------------------------------------------------------
# This message window is used to display text.
#==============================================================================
class Window_Message < Window_Selectable
def show_face(face_src) #Zeigt Faceset an!
unless face_src.nil? #wenn Faceset eingegeben wurde
@facebit = RPG::Cache.picture("fenster.png") #lade Rahmen
pic = RPG::Cache.picture(face_src) #lade Face
picture = Bitmap.new(300,291); #lege die Größe des Facesets fest
difx = (@facebit.width - picture.width) / 2 #speichert die Breite des Rahmens
dify = (@facebit.height - picture.height) / 2 #speichert die Höhe des Rahmens
#Messageposition
case $game_system.message_position #Positioniert Faceset auf Fensterposition
when 0; y = 176#176 #wenn oben
when 1; y = 320#320 #wenn mitte
when 2; y = 178 - @facebit.height #178 #wenn unten
end
picturesize = picture.rect
picture.stretch_blt(picturesize,pic, pic.rect ) #Verkleinere das Faceset, falls nötig
@facebit.blt(difx, dify, picture, picturesize) #Füge das Faceset in den Rahmen ein
@face = Sprite.new #Erstelle Sprite zum Anzeigen des Facesets
@face.bitmap = @facebit
@face.x = -60 #positioniere Sprite, faceset nach rechts
@face.y = 130 #faceset nach unten
@face.z = 300 #Sprite soll über anderen Dingen der Map angezeigt werden!
end
end
def clear_face #löscht Face wieder
unless @facebit.nil?; @facebit.dispose; end
unless @face.nil?; @face.dispose; end
end
def mirror_face #spiegelt das Faceset
@face.x = 560 - @facebit.width #positioniere das Faceset auf die rechte Seite!
@face.mirror = true #spiegele das Faceset!
end
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 304, 640, 160) #80, 304, 480, 160 standart, 80=nach rechts, 480=breite, 160=nach unten
self.contents = Bitmap.new(width - 32, height - 32)
self.visible = false
self.z = 9998
@fade_in = false
@fade_out = false
@contents_showing = false
@cursor_width = 0
self.active = false
self.index = -1
end
#--------------------------------------------------------------------------
# * Dispose
#--------------------------------------------------------------------------
def dispose
terminate_message
$game_temp.message_window_showing = false
if @input_number_window != nil
@input_number_window.dispose
end
super
end
#--------------------------------------------------------------------------
# * Terminate Message
#--------------------------------------------------------------------------
def terminate_message
clear_face
self.active = false
self.pause = false
self.index = -1
self.contents.clear
# Clear showing flag
@contents_showing = false
# Call message callback
if $game_temp.message_proc != nil
$game_temp.message_proc.call
end
# Clear variables related to text, choices, and number input
$game_temp.message_text = nil
$game_temp.message_proc = nil
$game_temp.choice_start = 99
$game_temp.choice_max = 0
$game_temp.choice_cancel_type = 0
$game_temp.choice_proc = nil
$game_temp.num_input_start = 99
$game_temp.num_input_variable_id = 0
$game_temp.num_input_digits_max = 0
# Open gold window
if @gold_window != nil
@gold_window.dispose
@gold_window = nil
end
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = normal_color
x = y = 0
@cursor_width = 0
# Indent if choice
if $game_temp.choice_start == 0
x = 8
end
# If waiting for a message to be displayed
if $game_temp.message_text != nil
text = $game_temp.message_text
# Control text processing
begin
last_text = text.clone
text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
end until text == last_text
text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
$game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
end
text.gsub!(/\\F(.?)\[(.+)\]/i) do #Wenn \f[x] geschrieben wird...
|match|
face_src = $2 #nimm das x...
show_face(face_src) #...und zeige mit ihm das Faceset an
if $1.upcase == "R" #Wenn \fr[x] geschrieben ist...
unless @face.nil?; mirror_face; end #...spiegele das Faceset
end
match = "" #Entferne das \f[x] aus der angezeigten Message!
end
# Change "\\\\" to "\000" for convenience
text.gsub!(/\\\\/) { "\000" }
# Change "\\C" to "\001" and "\\G" to "\002"
text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
text.gsub!(/\\[Gg]/) { "\002" }
# Get 1 text character in c (loop until unable to get text)
while ((c = text.slice!(/./m)) != nil)
# If \\
if c == "\000"
# Return to original text
c = "\\"
end
# If \C[n]
if c == "\001"
# Change text color
text.sub!(/\[([0-9]+)\]/, "")
color = $1.to_i
if color >= 0 and color <= 7
self.contents.font.color = text_color(color)
end
# go to next text
next
end
# If \G
if c == "\002"
# Make gold window
if @gold_window == nil
@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
# go to next text
next
end
# If new line text
if c == "\n"
# Update cursor width if choice
if y >= $game_temp.choice_start
@cursor_width = [@cursor_width, x].max
end
# Add 1 to y
y += 1
x = 0
# Indent if choice
if y >= $game_temp.choice_start
x = 8
end
# go to next text
next
end
# Draw text
self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
# Add x to drawn text width
x += self.contents.text_size(c).width
end
end
# If choice
if $game_temp.choice_max > 0
@item_max = $game_temp.choice_max
self.active = true
self.index = 0
end
# If number input
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
#--------------------------------------------------------------------------
# * Set Window Position and Opacity Level
#--------------------------------------------------------------------------
def reset_window
if $game_temp.in_battle
self.y = 16
else
case $game_system.message_position
when 0 # up
self.y = 16
when 1 # middle
self.y = 160
when 2 # down
self.y = 304 # bei 0 rahmenfenster ganz oben
end
end
if $game_system.message_frame == 0
self.opacity = 255
else
self.opacity = 0
end
self.back_opacity = 160
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
# If fade in
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
# If inputting number
if @input_number_window != nil
@input_number_window.update
# Confirm
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
# Dispose of number input window
@input_number_window.dispose
@input_number_window = nil
terminate_message
end
return
end
# If message is being displayed
if @contents_showing
# If choice isn't being displayed, show pause sign
if $game_temp.choice_max == 0
self.pause = true
end
# Cancel
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
# Confirm
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
terminate_message
end
return
end
# If display wait message or choice exists when not fading out
if @fade_out == false and $game_temp.message_text != nil
@contents_showing = true
$game_temp.message_window_showing = true
reset_window
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 message which should be displayed is not shown, but window is visible
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
#--------------------------------------------------------------------------
# * Cursor Rectangle Update
#--------------------------------------------------------------------------
def update_cursor_rect
if @index >= 0
n = $game_temp.choice_start + @index
self.cursor_rect.set(8, n * 32, @cursor_width, 32)
else
self.cursor_rect.empty
end
end
end
zum Lesen den Text mit der Maus markieren
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Hannah« (16. Dezember 2012, 21:40)
Anstatt das jetzt durchzugehen (hab grade den Maker nicht zur Hand zum testen) empfehle ich dir einfach mal das Universal Message System.
Das hat alle Funktionen, die du brauchst und vermutlich sogar noch mehr, die später mal nützlich werden könnten.
ccoa's UMS 1.8.0
Das hat alle Funktionen, die du brauchst und vermutlich sogar noch mehr, die später mal nützlich werden könnten.
ccoa's UMS 1.8.0

Ich habe es leider nur mit dem ersten Message Script geschafft. Das UMS war mir leider zu kompliziert. Hier ist nochmal das message Script. Ersetze das UMS mit dem.
Ich habe in Zeile 31 folgendes geschrieben:
Ich habe in Zeile 31 folgendes geschrieben:
|
|
Quellcode |
1 |
@face.y = 15 #faceset nach unten |
|
|
Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 |
#==============================================================================
# ** Window_Message
#------------------------------------------------------------------------------
# This message window is used to display text.
#==============================================================================
class Window_Message < Window_Selectable
def show_face(face_src) #Zeigt Faceset an!
unless face_src.nil? #wenn Faceset eingegeben wurde
@facebit = RPG::Cache.picture("fenster.png") #lade Rahmen
pic = RPG::Cache.picture(face_src) #lade Face
picture = Bitmap.new(300,291); #lege die Größe des Facesets fest
difx = (@facebit.width - picture.width) / 2 #speichert die Breite des Rahmens
dify = (@facebit.height - picture.height) / 2 #speichert die Höhe des Rahmens
#Messageposition
case $game_system.message_position #Positioniert Faceset auf Fensterposition
when 0; y = 176#176 #wenn oben
when 1; y = 320#320 #wenn mitte
when 2; y = 178 - @facebit.height #178 #wenn unten
end
picturesize = picture.rect
picture.stretch_blt(picturesize,pic, pic.rect ) #Verkleinere das Faceset, falls nötig
@facebit.blt(difx, dify, picture, picturesize) #Füge das Faceset in den Rahmen ein
@face = Sprite.new #Erstelle Sprite zum Anzeigen des Facesets
@face.bitmap = @facebit
@face.x = -60 #positioniere Sprite, faceset nach rechts
@face.y = 15 #faceset nach unten
@face.z = 300 #Sprite soll über anderen Dingen der Map angezeigt werden!
end
end
def clear_face #löscht Face wieder
unless @facebit.nil?; @facebit.dispose; end
unless @face.nil?; @face.dispose; end
end
def mirror_face #spiegelt das Faceset
@face.x = 560 - @facebit.width #positioniere das Faceset auf die rechte Seite!
@face.mirror = true #spiegele das Faceset!
end
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 304, 640, 160) #80, 304, 480, 160 standart, 80=nach rechts, 480=breite, 160=nach unten
self.contents = Bitmap.new(width - 32, height - 32)
self.visible = false
self.z = 9998
@fade_in = false
@fade_out = false
@contents_showing = false
@cursor_width = 0
self.active = false
self.index = -1
end
#--------------------------------------------------------------------------
# * Dispose
#--------------------------------------------------------------------------
def dispose
terminate_message
$game_temp.message_window_showing = false
if @input_number_window != nil
@input_number_window.dispose
end
super
end
#--------------------------------------------------------------------------
# * Terminate Message
#--------------------------------------------------------------------------
def terminate_message
clear_face
self.active = false
self.pause = false
self.index = -1
self.contents.clear
# Clear showing flag
@contents_showing = false
# Call message callback
if $game_temp.message_proc != nil
$game_temp.message_proc.call
end
# Clear variables related to text, choices, and number input
$game_temp.message_text = nil
$game_temp.message_proc = nil
$game_temp.choice_start = 99
$game_temp.choice_max = 0
$game_temp.choice_cancel_type = 0
$game_temp.choice_proc = nil
$game_temp.num_input_start = 99
$game_temp.num_input_variable_id = 0
$game_temp.num_input_digits_max = 0
# Open gold window
if @gold_window != nil
@gold_window.dispose
@gold_window = nil
end
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = normal_color
x = y = 0
@cursor_width = 0
# Indent if choice
if $game_temp.choice_start == 0
x = 8
end
# If waiting for a message to be displayed
if $game_temp.message_text != nil
text = $game_temp.message_text
# Control text processing
begin
last_text = text.clone
text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
end until text == last_text
text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
$game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
end
text.gsub!(/\\F(.?)\[(.+)\]/i) do #Wenn \f[x] geschrieben wird...
|match|
face_src = $2 #nimm das x...
show_face(face_src) #...und zeige mit ihm das Faceset an
if $1.upcase == "R" #Wenn \fr[x] geschrieben ist...
unless @face.nil?; mirror_face; end #...spiegele das Faceset
end
match = "" #Entferne das \f[x] aus der angezeigten Message!
end
# Change "\\\\" to "\000" for convenience
text.gsub!(/\\\\/) { "\000" }
# Change "\\C" to "\001" and "\\G" to "\002"
text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
text.gsub!(/\\[Gg]/) { "\002" }
# Get 1 text character in c (loop until unable to get text)
while ((c = text.slice!(/./m)) != nil)
# If \\
if c == "\000"
# Return to original text
c = "\\"
end
# If \C[n]
if c == "\001"
# Change text color
text.sub!(/\[([0-9]+)\]/, "")
color = $1.to_i
if color >= 0 and color <= 7
self.contents.font.color = text_color(color)
end
# go to next text
next
end
# If \G
if c == "\002"
# Make gold window
if @gold_window == nil
@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
# go to next text
next
end
# If new line text
if c == "\n"
# Update cursor width if choice
if y >= $game_temp.choice_start
@cursor_width = [@cursor_width, x].max
end
# Add 1 to y
y += 1
x = 0
# Indent if choice
if y >= $game_temp.choice_start
x = 8
end
# go to next text
next
end
# Draw text
self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
# Add x to drawn text width
x += self.contents.text_size(c).width
end
end
# If choice
if $game_temp.choice_max > 0
@item_max = $game_temp.choice_max
self.active = true
self.index = 0
end
# If number input
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
#--------------------------------------------------------------------------
# * Set Window Position and Opacity Level
#--------------------------------------------------------------------------
def reset_window
if $game_temp.in_battle
self.y = 16
else
case $game_system.message_position
when 0 # up
self.y = 16
when 1 # middle
self.y = 160
when 2 # down
self.y = 304 # bei 0 rahmenfenster ganz oben
end
end
if $game_system.message_frame == 0
self.opacity = 255
else
self.opacity = 0
end
self.back_opacity = 160
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
# If fade in
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
# If inputting number
if @input_number_window != nil
@input_number_window.update
# Confirm
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
# Dispose of number input window
@input_number_window.dispose
@input_number_window = nil
terminate_message
end
return
end
# If message is being displayed
if @contents_showing
# If choice isn't being displayed, show pause sign
if $game_temp.choice_max == 0
self.pause = true
end
# Cancel
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
# Confirm
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
terminate_message
end
return
end
# If display wait message or choice exists when not fading out
if @fade_out == false and $game_temp.message_text != nil
@contents_showing = true
$game_temp.message_window_showing = true
reset_window
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 message which should be displayed is not shown, but window is visible
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
#--------------------------------------------------------------------------
# * Cursor Rectangle Update
#--------------------------------------------------------------------------
def update_cursor_rect
if @index >= 0
n = $game_temp.choice_start + @index
self.cursor_rect.set(8, n * 32, @cursor_width, 32)
else
self.cursor_rect.empty
end
end
end |
zum Lesen den Text mit der Maus markieren
Danke schon mal für deine Hilfe.
So sieht es jetzt aus... Aber da waren wir leider auch schon :/
Wir wollten es halt wirklich links unten in der Ecke haben, dann das der Kasten im Hintergrund ist und die Schrift dann nach dem Bild anfängt.
Ist zwar jetzt extrem billig und hässlich gemacht, sitze aber gerade leider an einem anderen Rechner und hier ist nicht mehr drauf xD
Ich hoffe, dass man so besser versteht, was wir meinen...
So sieht es jetzt aus... Aber da waren wir leider auch schon :/
Wir wollten es halt wirklich links unten in der Ecke haben, dann das der Kasten im Hintergrund ist und die Schrift dann nach dem Bild anfängt.
Ist zwar jetzt extrem billig und hässlich gemacht, sitze aber gerade leider an einem anderen Rechner und hier ist nicht mehr drauf xD
Ich hoffe, dass man so besser versteht, was wir meinen...
So sollte es jetzt gehen:
Ich hab den Skript teilweise übersichtlicher gemacht. Darum poste ich ihn mal komplett:
|
|
Ruby Quellcode |
1 |
self.x = 160 |
Ich hab den Skript teilweise übersichtlicher gemacht. Darum poste ich ihn mal komplett:
|
|
Ruby Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 |
#============================================================================== # ** Window_Message #------------------------------------------------------------------------------ # This message window is used to display text. #============================================================================== class Window_Message < Window_Selectable def show_face(face_src) #Zeigt Faceset an! unless face_src.nil? #wenn Faceset eingegeben wurde @facebit = RPG::Cache.picture("fenster.png") #lade Rahmen pic = RPG::Cache.picture(face_src) #lade Face picture = Bitmap.new(300,291); #lege die Größe des Facesets fest difx = (@facebit.width - picture.width) / 2 #speichert die Breite des Rahmens dify = (@facebit.height - picture.height) / 2 #speichert die Höhe des Rahmens #Messageposition case $game_system.message_position #Positioniert Faceset auf Fensterposition when 0; y = 176#176 #wenn oben when 1; y = 320#320 #wenn mitte when 2; y = 178 - @facebit.height #178 #wenn unten end picturesize = picture.rect picture.stretch_blt(picturesize,pic, pic.rect ) #Verkleinere das Faceset, falls nötig @facebit.blt(difx, dify, picture, picturesize) #Füge das Faceset in den Rahmen ein @face = Sprite.new #Erstelle Sprite zum Anzeigen des Facesets @face.bitmap = @facebit @face.x = -60 #positioniere Sprite, faceset nach rechts @face.y = 190 #faceset nach unten @face.z = 300 #Sprite soll über anderen Dingen der Map angezeigt werden! end end def clear_face #löscht Face wieder unless @facebit.nil?; @facebit.dispose; end unless @face.nil?; @face.dispose; end end def mirror_face #spiegelt das Faceset @face.x = 560 - @facebit.width #positioniere das Faceset auf die rechte Seite! @face.mirror = true #spiegele das Faceset! end #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super(0, 304, 640, 160) #80, 304, 480, 160 standart, 80=nach rechts, 480=breite, 160=nach unten self.contents = Bitmap.new(width - 32, height - 32) self.visible = false self.z = 9998 @fade_in = false @fade_out = false @contents_showing = false @cursor_width = 0 self.active = false self.index = -1 end #-------------------------------------------------------------------------- # * Dispose #-------------------------------------------------------------------------- def dispose terminate_message $game_temp.message_window_showing = false if @input_number_window != nil @input_number_window.dispose end super end #-------------------------------------------------------------------------- # * Terminate Message #-------------------------------------------------------------------------- def terminate_message clear_face self.active = false self.pause = false self.index = -1 self.contents.clear # Clear showing flag @contents_showing = false # Call message callback if $game_temp.message_proc != nil $game_temp.message_proc.call end # Clear variables related to text, choices, and number input $game_temp.message_text = nil $game_temp.message_proc = nil $game_temp.choice_start = 99 $game_temp.choice_max = 0 $game_temp.choice_cancel_type = 0 $game_temp.choice_proc = nil $game_temp.num_input_start = 99 $game_temp.num_input_variable_id = 0 $game_temp.num_input_digits_max = 0 # Open gold window if @gold_window != nil @gold_window.dispose @gold_window = nil end end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear self.contents.font.color = normal_color x = y = 0 @cursor_width = 0 # Indent if choice if $game_temp.choice_start == 0 x = 8 end # If waiting for a message to be displayed if $game_temp.message_text != nil text = $game_temp.message_text # Control text processing begin last_text = text.clone text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] } end until text == last_text text.gsub!(/\\[Nn]\[([0-9]+)\]/) do $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : "" end text.gsub!(/\\F(.?)\[(.+)\]/i) do #Wenn \f[x] geschrieben wird... |match| face_src = $2 #nimm das x... show_face(face_src) #...und zeige mit ihm das Faceset an if $1.upcase == "R" #Wenn \fr[x] geschrieben ist... unless @face.nil?; mirror_face; end #...spiegele das Faceset end match = "" #Entferne das \f[x] aus der angezeigten Message! end # Change "\\\\" to "\000" for convenience text.gsub!(/\\\\/) { "\000" } # Change "\\C" to "\001" and "\\G" to "\002" text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" } text.gsub!(/\\[Gg]/) { "\002" } # Get 1 text character in c (loop until unable to get text) while ((c = text.slice!(/./m)) != nil) # If \\ if c == "\000" # Return to original text c = "\\" end # If \C[n] if c == "\001" # Change text color text.sub!(/\[([0-9]+)\]/, "") color = $1.to_i if color >= 0 and color <= 7 self.contents.font.color = text_color(color) end # go to next text next end # If \G if c == "\002" # Make gold window if @gold_window == nil @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 # go to next text next end # If new line text if c == "\n" # Update cursor width if choice if y >= $game_temp.choice_start @cursor_width = [@cursor_width, x].max end # Add 1 to y y += 1 x = 0 # Indent if choice if y >= $game_temp.choice_start x = 8 end # go to next text next end # Draw text self.contents.draw_text(4 + x, 32 * y, 40, 32, c) # Add x to drawn text width x += self.contents.text_size(c).width end end # If choice if $game_temp.choice_max > 0 @item_max = $game_temp.choice_max self.active = true self.index = 0 end # If number input 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 #-------------------------------------------------------------------------- # * Set Window Position and Opacity Level #-------------------------------------------------------------------------- def reset_window if $game_temp.in_battle self.y = 16 else case $game_system.message_position when 0 # up self.y = 16 when 1 # middle self.y = 160 when 2 # down self.y = 304 # bei 0 rahmenfenster ganz oben self.x = 160 # bei 0 rahmenfenster ganz oben end end if $game_system.message_frame == 0 self.opacity = 255 else self.opacity = 0 end self.back_opacity = 160 end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update super # If fade in 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 # If inputting number if @input_number_window != nil @input_number_window.update # Confirm 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 # Dispose of number input window @input_number_window.dispose @input_number_window = nil terminate_message end return end # If message is being displayed if @contents_showing # If choice isn't being displayed, show pause sign if $game_temp.choice_max == 0 self.pause = true end # Cancel 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 # Confirm 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 terminate_message end return end # If display wait message or choice exists when not fading out if @fade_out == false and $game_temp.message_text != nil @contents_showing = true $game_temp.message_window_showing = true reset_window 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 message which should be displayed is not shown, but window is visible 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 #-------------------------------------------------------------------------- # * Cursor Rectangle Update #-------------------------------------------------------------------------- def update_cursor_rect if @index >= 0 n = $game_temp.choice_start + @index self.cursor_rect.set(8, n * 32, @cursor_width, 32) else self.cursor_rect.empty end end end |
zum Lesen den Text mit der Maus markieren
So müsste es jetzt richtig sein, wenn ich dich verstanden habe.
|
|
Ruby Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 |
#============================================================================== # ** Window_Message #------------------------------------------------------------------------------ # This message window is used to display text. #============================================================================== class Window_Message < Window_Selectable def show_face(face_src) #Zeigt Faceset an! unless face_src.nil? #wenn Faceset eingegeben wurde @facebit = RPG::Cache.picture("fenster.png") #lade Rahmen pic = RPG::Cache.picture(face_src) #lade Face picture = Bitmap.new(300,291); #lege die Größe des Facesets fest difx = (@facebit.width - picture.width) / 2 #speichert die Breite des Rahmens dify = (@facebit.height - picture.height) / 2 #speichert die Höhe des Rahmens #Messageposition case $game_system.message_position #Positioniert Faceset auf Fensterposition when 0; y = 176#176 #wenn oben when 1; y = 320#320 #wenn mitte when 2; y = 178 - @facebit.height #178 #wenn unten end picturesize = picture.rect picture.stretch_blt(picturesize,pic, pic.rect ) #Verkleinere das Faceset, falls nötig @facebit.blt(difx, dify, picture, picturesize) #Füge das Faceset in den Rahmen ein @face = Sprite.new #Erstelle Sprite zum Anzeigen des Facesets @face.bitmap = @facebit @face.x = -60 #positioniere Sprite, faceset nach rechts @face.y = 190 #faceset nach unten @face.z = 99999 #Sprite soll über anderen Dingen der Map angezeigt werden! end end def clear_face #löscht Face wieder unless @facebit.nil?; @facebit.dispose; end unless @face.nil?; @face.dispose; end end def mirror_face #spiegelt das Faceset @face.x = 560 - @facebit.width #positioniere das Faceset auf die rechte Seite! @face.mirror = true #spiegele das Faceset! end #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super(0, 304, 640, 160) #80, 304, 480, 160 standart, 80=nach rechts, 480=breite, 160=nach unten self.contents = Bitmap.new(width - 32, height - 32) self.visible = false self.z = 9999 @fade_in = false @fade_out = false @contents_showing = false @cursor_width = 0 self.active = false self.index = -1 end #-------------------------------------------------------------------------- # * Dispose #-------------------------------------------------------------------------- def dispose terminate_message $game_temp.message_window_showing = false if @input_number_window != nil @input_number_window.dispose end super end #-------------------------------------------------------------------------- # * Terminate Message #-------------------------------------------------------------------------- def terminate_message clear_face self.active = false self.pause = false self.index = -1 self.contents.clear # Clear showing flag @contents_showing = false # Call message callback if $game_temp.message_proc != nil $game_temp.message_proc.call end # Clear variables related to text, choices, and number input $game_temp.message_text = nil $game_temp.message_proc = nil $game_temp.choice_start = 99 $game_temp.choice_max = 0 $game_temp.choice_cancel_type = 0 $game_temp.choice_proc = nil $game_temp.num_input_start = 99 $game_temp.num_input_variable_id = 0 $game_temp.num_input_digits_max = 0 # Open gold window if @gold_window != nil @gold_window.dispose @gold_window = nil end end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear self.contents.font.color = normal_color x = y = 0 @cursor_width = 0 # Indent if choice if $game_temp.choice_start == 0 x = 8 end # If waiting for a message to be displayed if $game_temp.message_text != nil text = $game_temp.message_text # Control text processing begin last_text = text.clone text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] } end until text == last_text text.gsub!(/\\[Nn]\[([0-9]+)\]/) do $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : "" end text.gsub!(/\\F(.?)\[(.+)\]/i) do #Wenn \f[x] geschrieben wird... |match| face_src = $2 #nimm das x... show_face(face_src) #...und zeige mit ihm das Faceset an if $1.upcase == "R" #Wenn \fr[x] geschrieben ist... unless @face.nil?; mirror_face; end #...spiegele das Faceset end match = "" #Entferne das \f[x] aus der angezeigten Message! end # Change "\\\\" to "\000" for convenience text.gsub!(/\\\\/) { "\000" } # Change "\\C" to "\001" and "\\G" to "\002" text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" } text.gsub!(/\\[Gg]/) { "\002" } # Get 1 text character in c (loop until unable to get text) while ((c = text.slice!(/./m)) != nil) # If \\ if c == "\000" # Return to original text c = "\\" end # If \C[n] if c == "\001" # Change text color text.sub!(/\[([0-9]+)\]/, "") color = $1.to_i if color >= 0 and color <= 7 self.contents.font.color = text_color(color) end # go to next text next end # If \G if c == "\002" # Make gold window if @gold_window == nil @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 # go to next text next end # If new line text if c == "\n" # Update cursor width if choice if y >= $game_temp.choice_start @cursor_width = [@cursor_width, x].max end # Add 1 to y y += 1 x = 0 # Indent if choice if y >= $game_temp.choice_start x = 8 end # go to next text next end # Draw text self.contents.draw_text(150 + x, 32 * y, 40, 32, c) # Add x to drawn text width x += self.contents.text_size(c).width end end # If choice if $game_temp.choice_max > 0 @item_max = $game_temp.choice_max self.active = true self.index = 0 end # If number input 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 #-------------------------------------------------------------------------- # * Set Window Position and Opacity Level #-------------------------------------------------------------------------- def reset_window if $game_temp.in_battle self.y = 16 else case $game_system.message_position when 0 # up self.y = 16 self.x = 160 when 1 # middle self.y = 160 self.x = 160 when 2 # down self.y = 320 self.x = 0 end end if $game_system.message_frame == 0 self.opacity = 255 else self.opacity = 0 end self.back_opacity = 160 end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update super # If fade in 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 # If inputting number if @input_number_window != nil @input_number_window.update # Confirm 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 # Dispose of number input window @input_number_window.dispose @input_number_window = nil terminate_message end return end # If message is being displayed if @contents_showing # If choice isn't being displayed, show pause sign if $game_temp.choice_max == 0 self.pause = true end # Cancel 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 # Confirm 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 terminate_message end return end # If display wait message or choice exists when not fading out if @fade_out == false and $game_temp.message_text != nil @contents_showing = true $game_temp.message_window_showing = true reset_window 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 message which should be displayed is not shown, but window is visible 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 #-------------------------------------------------------------------------- # * Cursor Rectangle Update #-------------------------------------------------------------------------- def update_cursor_rect if @index >= 0 n = $game_temp.choice_start + @index self.cursor_rect.set(8, n * 32, @cursor_width, 32) else self.cursor_rect.empty end end end |
zum Lesen den Text mit der Maus markieren
Ähnliche Themen
-
Skript-Anfragen »-
Nur auf er Weltkarte speichern
(11. Dezember 2012, 22:05)
-
Skript-Anfragen »-
Faceset im Dialog Fenster
(27. Juni 2011, 00:33)
-
Skript-Anfragen »-
Scriptsuche - Message System
(4. März 2011, 14:28)
-
Skript-Anfragen »-
Faceset im Menü und speicher und lade fenster...?
(17. Mai 2008, 13:37)
-
Skript-Anfragen »-
suche Faceset script
(1. Juli 2007, 13:24)



Genau das ist es! Vielen, vielen Dank!!! Du hast uns sprichwörtlich den Arsch gerettet!