Belle fenêtre de dialogue
Kryptomancia :: Section Création :: Script :: Autre
Page 1 sur 1 • Partager •
Belle fenêtre de dialogue
Se scripts permet d'avoir une belle fenêtre de dialogue,personalisable
Auteur:inconu
*Scripts tester et valider par moi
Screens

Fonctionnement
Importer cette image(que vous pouvez retoucher a votre quiz)dans le dossier "picture"(Outils-->gestionnaire de ressources-->Graphic/Picture)
Importer aussi votre face dans le dossier Picture, qui devra être de108 de Largeur et 138 de Hauteur.
Si votre face est mal positionner, redimensionner la pour quel se place correctement.
Puis:
Ensuite, le message qu'il doit dire.
Et en toute fin de l'évènement, insérer scripts et mettre ce ci:
Chez moi ça marche sans, mais metter le quand on c'est jamais.
Il y a des options comme le scripts "Advanced Message", pour personaliser le texte, met je ne les est pas, si quel qu'un les connais, qu'il les poste.
Cependant vous pouvez toujours regarder dans le scripts, il y a pas mal de chose personnalisable.
Auteur:inconu
*Scripts tester et valider par moi
Screens

- Code:
Crée un nouveau scripts au dessus de "Main" et coller se scripts Scripts(1) #================================== # Window_Message #------------------------------- # The message window. #================================== class Window_Message < Window_Selectable attr_accessor :autoclosetime attr_accessor :op #------------------------------- # Object Initialization #------------------------------- def initialize super(80+64, 336, 480, 128)#(80, 304, 480, 160) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.size = 24 self.contents.font.name = $fontface self.visible = false self.z = 9998 @fade_in = false @fade_out = false @contents_showing = false @cursor_width = 0 @autoclosetime = -1 @op = 255 @refreshflag = false self.active = false self.index = -1 @update_text = true self.windowskin = nil end #------------------------------- # Garbage Collection #------------------------------- def dispose terminate_message $game_temp.message_window_showing = false if @input_number_window != nil @input_number_window.dispose end super end #------------------------------- # Message Termination Process #------------------------------- 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 # ***ccoa*** #if there was a face showing, make it invisible if $message_showing != nil self.windowskin = RPG::Cache.windowskin("001-Blue01") @message.visible = false end if $face_showing != nil self.windowskin=nil @face.visible = false end end #------------------------------- # Refresh #------------------------------- def refresh self.contents.clear self.contents.font.color = normal_color self.contents.font.name =$fontface self.contents.font.size = 24 self.windowskin = nil @x = @y = 0 @cursor_width = 0 @autoclosetime = -1 @refreshflag = true @lineheight = 32 @active = "" @a = "" @centerflag = false @rightflag = false @bannerflag = false @update_text = true @text_skip = false # ***ccoa*** # face for the message box @face = Sprite.new @face.visible = true @message = Sprite.new @message.visible = true 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!(/\/) { "00" } @text.gsub!(/[Cc][([0-9]+)]/) { "01[#{$1}]" } @text.gsub!(/[Gg]/) { "02" } @text.gsub!(/[Ii][([0-9]+)]/) { "03[#{$1}]" } @text.gsub!(/[Ff][([0-9]+)]/) { "04[#{$1}]" } @text.gsub!(/[Aa][([0-9]+)]/) { "05[#{$1}]" } @text.gsub!(/[Xx]/) { "06" } @text.gsub!(/[Rr]/) { "07" } @text.gsub!(/[Dd]/) { "11" } @text.gsub!(/[Ss][([0-9]+)]/) { "23[#{$1}]" } @text.gsub!(/[Bb]/) { "17" } @text.gsub!(/[Ww][([0-9]+)]/) { "14[#{$1}]" } @text.gsub!(/[Mm][([0-9]+)]/) { "15[#{$1}]" } @text.gsub!(/[Oo][([0-9]+)]/) { "16[#{$1}]" } @text.gsub!(/[Jj][([0-9]+)]/) { "13[#{$1}]" } @text.gsub!(/[Hh][([0-9]+)]/) { "21[#{$1}]" } @text.gsub!(/[Kk][([0-9]+)]/) { "22[#{$1}]" } end def update_text if @text != nil while ((c = @text.slice!(/./m)) != nil) if c == "00" c = "" end #while ((c = @text.slice!(/./m)) != nil) if c == "00" c = "" end if c == "01" @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 == "02" 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 == "03" @text.sub!(/[([0-9]+)]/, "") item_sub = $1.to_i c = $data_items[item_sub].name l = self.contents.text_size(c).width draw_item_name($data_items[item_sub], @x, @y * 32 + 1) @x = @x + l + 24 next end if c == "04" @text.sub!(/[([0-9]+)]/, "") fontize = $1.to_i case fontize when 1 self.contents.font.name = "Arial" when 2 self.contents.font.name = "High Tower Text" when 3 self.contents.font.name = "Tw Cen MT" when 4 self.contents.font.name = "Tahoma" end next end if c == "05" @text.sub!(/[([0-9]+)]/, "") @autoclosetime = $1.to_i next end if c == "06" @centerflag = true next end if c == "07" @rightflag = true next end if c == "11" self.contents.font.name = $fontface self.contents.font.size = 24 self.contents.font.color = normal_color @lineheight = 32 next end if c == "14" @text.sub!(/[([0-9]+)]/, "") w_sub = $1.to_i c = $data_weapons[w_sub].name l = self.contents.text_size(c).width bitmap = RPG::Cache.icon($data_weapons[w_sub].icon_name) self.contents.blt(@x+4, @y * 32+ 4, bitmap, Rect.new(0, 0, 24, 24)) @x += 28 self.contents.draw_text(@x+4, 32 * @y, l+32, @lineheight, c) @x = @x + l next end if c == "15" @text.sub!(/[([0-9]+)]/, "") a_sub = $1.to_i c = $data_armors[a_sub].name l = self.contents.text_size(c).width bitmap = RPG::Cache.icon($data_armors[a_sub].icon_name) self.contents.blt(@x+4, @y * 32+ 4, bitmap, Rect.new(0, 0, 24, 24)) @x += 28 self.contents.draw_text(@x+4, 32 * @y, l+32, @lineheight, c) @x = @x + l next end if c == "16" @text.sub!(/[([0-9]+)]/, "") @op = $1.to_i next end if c == "17" @bannerflag = true next end if c == "18" @text.sub!(/[([0-9]+)]/, "") jump = $1.to_i @x += jump next end if c == "21" @text.sub!(/[([0-9]+)]/, "") @lineheight = $1.to_i next end if c == "22" @text.sub!(/[([0-9]+)]/, "") skill_sub = $1.to_i c = $data_skills[skill_sub].name l = self.contents.text_size(c).width bitmap = RPG::Cache.icon($data_skills[skill_sub].icon_name) self.contents.blt(@x+4, @y * 32+ 4, bitmap, Rect.new(0, 0, 24, 24)) @x += 28 self.contents.draw_text(@x+4, 32 * @y, l+32, @lineheight, c) @x = @x + l next end if c == "23" @text.sub!(/[([0-9]+)]/, "") bigness = $1.to_i self.contents.font.size = bigness next end if c == "n" if @centerflag == true @x = 448 - @x @x = @x / 2 self.contents.draw_text(@x, 32 * @y, 448-@x, @lineheight, @a) end if @rightflag == true @x = 448 - @x self.contents.draw_text(@x, 32 * @y, 448-@x, @lineheight, @a) end if @bannerflag == true @x = 448 - @x @x = @x / 2 self.contents.draw_text(@x, 44, 448-@x, @lineheight, @a) end @a = "" @centerflag = false @rightflag = false @bannerflag = false 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 # ***ccoa*** if $message_showing != nil #draw the face, then add the text to one side of it @message.bitmap= RPG::Cache.picture("/" + $message_showing) @message.x = 18#18 @message.y = 340#340 @message.z = 9998 @message.visible = true else @message.bitmap= nil @message.x = 18 @message.y = 340 @message.z = 9998 @message.visible = false end #draw the face, then add the text to one side of it if $face_showing != nil @face.bitmap = RPG::Cache.picture("/" + $face_showing) @face.x = 30 @face.y = 320 #@face.x = 20 #@face.y = 344 @face.z = 9999 @face.opacity = 255 @face.visible = true if @centerflag == false && @rightflag == false && @bannerflag == false self.contents.draw_text(4 + @x, 32 * @y, 40, @lineheight, c) @x += self.contents.text_size(c).width else @a += c @x += self.contents.text_size(c).width end if $game_temp.in_battle self.y = 16 @face.y= 0 @message.y=16 else case $game_system.message_position when 0 # 上 @face.y= 0 @message.y=22 when 1 # 中 @face.y=138 @message.y=160 when 2 # 下#独自変更箇所 数値弄り @face.y=314 @message.y= 336 end end if !@text_skip $game_system.se_play($data_system.decision_se) return end else @face.bitmap = nil @face.x = 20 @face.y = 344 @face.z = 9999 @face.visible = false # just put in the text if @centerflag == false && @rightflag == false && @bannerflag == false self.contents.draw_text(4 + @x, 32 * @y, 40, @lineheight, c) @x += self.contents.text_size(c).width else @a += c @x += self.contents.text_size(c).width end if !@text_skip $game_system.se_play($data_system.decision_se) return end end end end self.opacity = 0 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 #draw the face, then add the text to one side of it @message.bitmap= RPG::Cache.picture("MessageFace/" + $message_showing) @message.x = 18#18 @message.y = 340#340 @message.z = 9998 @message.visible = true @face.bitmap = RPG::Cache.picture("MessageFace/" + $face_showing) @face.x = 30 @face.y = 320 #@face.x = 20 #@face.y = 344 @face.z = 9999 @face.opacity = 255 @face.visible = true 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 @update_text = false end end #------------------------------- # Reset the window in response to changes in the position or # transparency #------------------------------- 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 = 336 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 @refreshflag && @fade_in == false self.contents_opacity = @op end if @autoclosetime == 0 @autoclosetime = -1 terminate_message end if @autoclosetime >= 1 @autoclosetime -= 1 end if @fade_in self.contents_opacity +=999999999 if @input_number_window != nil @input_number_window.contents_opacity += 24 end if self.contents_opacity >= @op @fade_in = false end return end if @input_number_window != nil @input_number_window.update @message.visible = true @face.visible = true # ?? 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 @update_text if Input.trigger?(Input::C) @text_skip = true end update_text return 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 @op = 255 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 #------------------------------- # Updates the cursor rectangle. #------------------------------- def update_cursor_rect if @index >= 0 n = $game_temp.choice_start + @index # ***ccoa*** # make sure the cursor appears in the correct spot for choice messages if $message_showing != nil self.cursor_rect.set(8, n * 32, @cursor_width, 32) self.windowskin= RPG::Cache.windowskin("001-Blue01") end else self.cursor_rect.empty end end end puis renplacer le scripts "Main" par celui ci Scripts(2) #================================= #Main #------------------------------------------------------------------ #================================= begin $showm = Win32API.new 'user32', 'keybd_event', %w(l l l l), '' unless $DEBUG $showm.call(18,0,0,0) $showm.call(13,0,0,0) $showm.call(13,0,2,0) $showm.call(18,0,2,0) end # Font used in windows $defaultfonttype = $fontface = $fontname = Font.default_name = "Times New Roman" # Font size used $defaultfontsize = $fontsize = Font.default_size = 18 $face_showing = nil $message_showing = nil Graphics.freeze # シーンオブジェクト (タイトル画面) を作成 $scene = Scene_Title.new # $scene が有効な限り main メソッドを呼び出す while $scene != nil $scene.main end Graphics.transition(20) rescue Errno::ENOENT # 例外 Errno::ENOENT を補足 # ファイルがオープンできなかった場合、メッセージを表示して終了する filename = $!.message.sub("No such file or directory - ", "") print("File #{filename} was not found.") end
Fonctionnement
Importer cette image(que vous pouvez retoucher a votre quiz)dans le dossier "picture"(Outils-->gestionnaire de ressources-->Graphic/Picture)
Importer aussi votre face dans le dossier Picture, qui devra être de108 de Largeur et 138 de Hauteur.
Si votre face est mal positionner, redimensionner la pour quel se place correctement.
Puis:
- Code:
Crée un évènement-->=[b]insérer scripts[/b] et mètre ce ci :
$face_showing = '[b]nom_de_votre_face[/b]'
$message_showing = '[b]nom_de_votre_windowskin[/b]'
Ensuite, le message qu'il doit dire.
Et en toute fin de l'évènement, insérer scripts et mettre ce ci:
- Code:
$face_showing = nil
$message_showing = nil
Chez moi ça marche sans, mais metter le quand on c'est jamais.
Il y a des options comme le scripts "Advanced Message", pour personaliser le texte, met je ne les est pas, si quel qu'un les connais, qu'il les poste.
Cependant vous pouvez toujours regarder dans le scripts, il y a pas mal de chose personnalisable.

nara bakura- Nombre de messages: 44
Age: 18
Date d'inscription: 10/07/2007
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
















