• Anmelden

1

Samstag, 15. Dezember 2012, 17:16

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:
Bild

Wie man sieht, haut das noch nicht so wirklich hin :/

Für Hilfe wären wir sehr dankbar.

Daylen

Ritter

Motto: First comes smiles, then comes lies. Last is gunfire.

  • Nachricht senden

2

Samstag, 15. Dezember 2012, 17:28

Welches Messagesystem benutzt ihr?
UMS, AMS, oder ein komplett eigenes System?

Bild

3

Sonntag, 16. Dezember 2012, 18:09

Also wir selber sind nicht so gut bei sowas und haben uns das Script mal heruntergeladen gehabt...

Dann haben wir versucht es nach unseren Wünschen anzupassen - aber man sieht ja, wie das geklappt hat bzw. wissen wir einfach nicht weiter und das, obwohl wir da schon einige Zeit dransitzen :'D

Bex

Seher

Motto: Lets have some Fun.

  • Nachricht senden

4

Sonntag, 16. Dezember 2012, 18:50

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

5

Sonntag, 16. Dezember 2012, 19:20

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...

Spoiler

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)


Daylen

Ritter

Motto: First comes smiles, then comes lies. Last is gunfire.

  • Nachricht senden

6

Montag, 17. Dezember 2012, 13:51

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

Bild

7

Samstag, 22. Dezember 2012, 15:54

Der Link geht leider nicht mehr und auf anderen Seiten hat irgendwie auch keiner eine Version, die noch funktioniert. Kann uns jemand einen funktionierenden Link schicken oder versuchen uns bei unserem Skript zu helfen? :hilfe:

8

Samstag, 22. Dezember 2012, 16:00

Demnächst einfach googlen ;)
:navigation-right: UMS

9

Samstag, 22. Dezember 2012, 16:50

Danke, wir haben gegoogelt.
Du willst gar nicht wissen, wie lange wir schon nach Hilfe suchen.

Bild

So sieht es jetzt aus. Wir sind also wieder am Anfang ;(

10

Samstag, 22. Dezember 2012, 16:54

Könntest du vielleicht eine Demo hochladen. Dann kann ich dir besser helfen.

11

Samstag, 22. Dezember 2012, 17:24

Da ist sie. Hoffe du kriegst raus was da bei uns los ist :)
»Hannah« hat folgende Datei angehängt:
  • DEMO.zip (18,21 MB - 4 mal heruntergeladen - zuletzt: 11. März 2013, 03:11)

12

Samstag, 22. Dezember 2012, 17:44

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:

Quellcode

1
@face.y = 15 #faceset nach unten


Spoiler: Message Script

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

13

Samstag, 22. Dezember 2012, 17:55

Danke schon mal für deine Hilfe.

Bild

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...

Bild

14

Samstag, 22. Dezember 2012, 17:58

Füge das in Zeile 31 ein:

Ruby Quellcode

1
@face.y = 190 #faceset nach unten

15

Samstag, 22. Dezember 2012, 18:03

Sorry, dass war noch ein altes Bild, was wir hochgeladen hatten.
Aber das hatten wir wirklich schon so weit...

Also die Zeile haben wir drin und es ist links unten positioniert, aber der Rahmen ist ja noch drüber und der Text beginnt nicht rechts...

16

Samstag, 22. Dezember 2012, 19:45

So sollte es jetzt gehen:

Ruby Quellcode

1
self.x = 160 

Ich hab den Skript teilweise übersichtlicher gemacht. Darum poste ich ihn mal komplett:
Spoiler

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

17

Samstag, 22. Dezember 2012, 20:29

Danke, das ist nett. Aber leider waren wir auch dort schon, aber jetzt ist die Textbox neben dem Faceset....aber wir wollen ja das Faceset über die Messagebox drüberlegen. Sozusagen: Messagebox, dann Bild, dann Text direkt daneben.

18

Samstag, 22. Dezember 2012, 20:41

So müsste es jetzt richtig sein, wenn ich dich verstanden habe.
Spoiler

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

19

Samstag, 22. Dezember 2012, 20:57

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

Social Bookmarks