![]() |
|
|||||||
| RGSS-Scripts Postet hier die Scripts die ihr im Script-Editor selbst erstellt oder gefunden habt. Gefundene Scripts jedoch mit Quellenangabe posten! |
![]() |
|
|
Themen-Optionen |
11.10.2006, 03:07
|
#1 |
|
Administrator
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
So.. Eigentlich ist das weder neu, geschweige denn sonderlich toll, jedoch dient es als brauchbares Muster für andere. Damit kann ich daher das neue Unterforum damit relativ gut einweihen.
Das Script ist keineswegs von mir. Es wurde von RPG erstellt und von mir bearbeitet. (Und selbst das wäre ohne KDs Crashkurs noch ziemlich schief gegangen. ) Das Bild wird auf der linken Seite - innerhalb der Textbox - angezeigt. Wie man es verwendet: Öffnet den Scripteditor und sucht Window_Message. Dann kopiert ihr den folgenden Abschnitt und ersetzt damit Window_Message völlig. Code:
#==============================================================================
# Window_Message
#------------------------------------------------------------------------------
#
#==============================================================================
class Window_Message < Window_Selectable
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def initialize
super(80, 304, 480, 160)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font = Font.new("Arial")
self.visible = false
self.z = 9998
@fade_in = false
@fade_out = false
@contents_showing = false
@cursor_width = 0
@pic_width = 96
@pic_height = 96
self.active = false
self.index = -1
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def dispose
terminate_message
$game_temp.message_window_showing = false
if @input_number_window != nil
@input_number_window.dispose
end
super
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def terminate_message
self.active = false
self.pause = false
self.index = -1
self.contents.clear
@contents_showing = false
if $game_temp.message_proc != nil
$game_temp.message_proc.call
end
$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
if @gold_window != nil
@gold_window.dispose
@gold_window = nil
end
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = normal_color
x = y = 0
@cursor_width = 0
if $game_temp.choice_start == 0
x = 8
end
if $game_temp.message_text != nil
text = $game_temp.message_text
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!(/\\[Ww]\[([0-9]+)\]/) do
@pic_width = $1.to_i
""
end
text.gsub!(/\\[Hh]\[([0-9]+)\]/) do
@pic_height = $1.to_i
""
end
text.gsub!(/\\[Ff]\[([\w]+)\]/) do
temp = RPG::Cache.picture($1)
pic_x = self.contents.width - @pic_width - 350
pic_y = self.contents.height / 2 - @pic_height / 2
dest = Rect.new(pic_x,pic_y,@pic_width, @pic_height)
src = Rect.new(0,0,temp.width,temp.height)
self.contents.stretch_blt(dest, temp, src)
""
end
text.gsub!(/\\\\/) { "\000" }
text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
text.gsub!(/\\[Gg]/) { "\002" }
while ((c = text.slice!(/./m)) != nil)
if c == "\000"
c = "\\"
end
if c == "\001"
text.sub!(/\[([0-9]+)\]/, "")
color = $1.to_i
if color >= 0 and color <= 7
self.contents.font.color = text_color(color)
end
next
end
if c == "\002"
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
next
end
if c == "\n"
if y >= $game_temp.choice_start
@cursor_width = [@cursor_width, x].max
end
y += 1
x = 0
if y >= $game_temp.choice_start
x = 8
end
next
end
self.contents.draw_text(100 + x, 32 * y, 40, 32, c)
x += self.contents.text_size(c).width
end
end
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 reset_window
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
end
if $game_system.message_frame == 0
self.opacity = 255
else
self.opacity = 0
end
self.back_opacity = 160
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
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
terminate_message
end
return
end
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 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
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
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
Nun verwendet ihr in den Nachrichten den Befehl \f[Dateiname]. Also beispielsweise: \f[hero1] Die Dateiendung muss also ignoriert werden. Ihr könnt die Breite und Höhe des Bildes auch manipulieren. Dafür müsst ihr lediglich \h[Größe] ändern um die Höhe des Bildes zu ändern und \w[Größe] ändern um die Breite zu verändern. Wenn es Probleme oder Fragen gibt, einfach posten. |
|
|
03.12.2006, 19:45
|
#2 |
|
Neuling
![]() Registriert seit: 19.11.2006
Beiträge: 7
|
So ich habe das benutzt und dummerweise kein Save vom originalen Window_Message gemacht. Möchte nun das alte wiederhaben...
Wäre jemand so freundlich das Originalscript hier nochmal zu posten? |
|
|
03.12.2006, 19:48
|
#3 |
|
Administrator
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Code:
#==============================================================================
# ** Window_Message
#------------------------------------------------------------------------------
# This message window is used to display text.
#==============================================================================
class Window_Message < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(80, 304, 480, 160)
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
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
# 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
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
![]() |
|
|
01.03.2007, 20:35
|
#4 |
|
Abenteurer
![]() ![]() Registriert seit: 02.08.2003
Ort: Berlin
Alter: 27
Beiträge: 578
|
wo soll das entsprechende bild denn gespeichert werden?
welches format,farbtiefe etc muss es ahben? inwieweit kann man alte facesets gebrauchen?
__________________
![]() |
|
|
07.04.2007, 17:33
|
#5 |
|
Neuling
![]() Registriert seit: 30.03.2007
Beiträge: 35
|
Gibt vielleicht noch irgendwo ein anderes Script ?
Ich würde gern die Facesets links NEBEN der Textbox haben und nich in der Textbox ... kein bock die Texte neu zu schreiben. |
|
|
29.07.2007, 09:27
|
#6 |
|
Anfänger
![]() Registriert seit: 12.07.2007
Ort: Bayern
Alter: 24
Beiträge: 75
|
Eigendlich braucht man keine script dazu man kann gantz einfach zb: \f[hero1] eingeben und des wars.
Wen irgend jeman eine Textbox mit Face und nmen beschriftung haben will . einfachals Beispiel \f[heroe1] und \name[Pemela Anderson] eingeben und ehr habt eine text box mit face und name |
|
|
11.02.2008, 17:45
|
#7 | |
|
Anfänger
![]() Registriert seit: 12.10.2007
Ort: Hanau
Alter: 29
Beiträge: 81
|
Zitat:
__________________
pixelüberall diese PIXEL... PIXEL WÄÄÄÄÄÄH |
|
|
|
11.02.2008, 20:22
|
#8 |
|
Administrator
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Ein einzelnes Heldenbild muss im Picture-Ordner sein. (Puh, ist das lang her.)
Genau dieser Befehl muss dann in das Fenster eingegeben werden, wo du die Dialoge deiner Charaktere bearbeitest. \f[hero1] hero1 musst allerdings durch den Namen deiner Datei ersetzt werden. Zwar eine aufwändige Methode, aber besser als nichts. ![]() |
|
|
14.02.2008, 16:58
|
#9 |
|
Anfänger
![]() Registriert seit: 12.10.2007
Ort: Hanau
Alter: 29
Beiträge: 81
|
danke. aber ich fidne vond er methode her das mit dem eintippen ins fenster doch etwas einfacher also das was ganz oben beschrieben ist...
also muss man den befehl vor dem eigentlichem text eingeben? muss man den taxt dann wieder kürzen? oder kann der dann so bleiben wie er ist?
__________________
pixelüberall diese PIXEL... PIXEL WÄÄÄÄÄÄH |
|
|
15.02.2008, 01:56
|
#10 |
|
Administrator
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Sollte vor dem eigentlichem Text eingegeben werden. Und ja, es kann sehr gut sein das er gekürzt werden muss. Damit habe ich bisher noch nicht so experimentiert.
![]() |
|
|
15.02.2008, 12:03
|
#11 |
|
Anfänger
![]() Registriert seit: 12.10.2007
Ort: Hanau
Alter: 29
Beiträge: 81
|
ich werde es bei gelegen heit ausprobiern und dann sag ich bescheid ^^
__________________
pixelüberall diese PIXEL... PIXEL WÄÄÄÄÄÄH |
|
|
24.03.2008, 19:30
|
#12 | |
|
Anfänger
![]() Registriert seit: 12.07.2007
Ort: Bayern
Alter: 24
Beiträge: 75
|
Zitat:
Hast recht sorry ich war halt zurzeit ned zuhause deswegen kommte ich noch posten Lg Ruslan |
|
|
|
14.03.2009, 14:10
|
#13 |
|
Neuling
![]() Registriert seit: 14.03.2009
Beiträge: 7
|
Das mit dem \f[dateiname(ohne.jpg/png/usw.)] in der textbox klappt irgendwie nicht.
textbox: \f[dateiname] allgmeiner Text? Geändert von Allerias (14.03.2009 um 14:15 Uhr). |
|
|
15.05.2009, 18:55
|
#14 |
|
Schwertfechter
![]() Registriert seit: 20.02.2008
Beiträge: 256
|
du must darauf achten das der Dateiname keine Lehrzeichen enthält
wies mit Sonterzeichen wei zb ü und ! aussieht hab ich nicht getestet
__________________
Nur die Phantasielosen flüchten in die Realität! Noch Fragen zum Thema? dann hier |
|
|
26.07.2009, 00:41
|
#15 |
|
Neuling
![]() Registriert seit: 14.03.2009
Beiträge: 7
|
hm.. ich weiß nicht wie das funktionieren soll
habe es nochmals getestet Textbox edit : \f[heroa] text ausgabe ingame ist \f[heroa] text nix bild blanker text muss ich vielleicht noch irgendwas davor machen ? ich mein die bildaufruf funktion muss ja irgendwo erstmal definiert werden falls das nicht gehen sollte würde ich das gern mit dem Bild inner externen Box leicht der textbox überlappent lösen hat da wer ne anregung ? |
|
|
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
|
|