![]() |
|
RGSS-Scripts Postet hier die Scripts die ihr im Script-Editor selbst erstellt oder gefunden habt. Gefundene Scripts jedoch mit Quellenangabe posten! |
![]() |
|
Themen-Optionen |
![]() |
#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. |
![]() |
![]() |
![]() |
#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? |
![]() |
![]() |
![]() |
#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 ![]() |
![]() |
![]() |
![]() |
#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?
__________________
![]() |
![]() |
![]() |
![]() |
#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. |
![]() |
![]() |
![]() |
#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] ![]() |
![]() |
![]() |
![]() |
#7 | |
Anfänger
![]() Registriert seit: 12.10.2007
Ort: Hanau
Alter: 29
Beiträge: 81
|
![]() Zitat:
__________________
![]() überall diese PIXEL... PIXEL WÄÄÄÄÄÄH |
|
![]() |
![]() |
![]() |
#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. ![]() |
![]() |
![]() |
![]() |
#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?
__________________
![]() überall diese PIXEL... PIXEL WÄÄÄÄÄÄH |
![]() |
![]() |
![]() |
#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.
![]() |
![]() |
![]() |
![]() |
#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 ^^
__________________
![]() überall diese PIXEL... PIXEL WÄÄÄÄÄÄH |
![]() |
![]() |
![]() |
#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 |
|
![]() |
![]() |
![]() |
#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). |
![]() |
![]() |
![]() |
#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 |
![]() |
![]() |
![]() |
#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 | |
|
|