Invité Invité
| Sujet: Effets dans les messages Sam 26 Jan - 16:45 | |
| Voici un script qui permet de mettre des effets dans les messages. Voici un screen: Ouvrez l'éditeur de scripts (F11) et créez un nouveau script au dessus de "Main" et nommez le "Advanced Text Effects Script" et collez le code ci-dessous. Utilisation : Mettez avant le mot les signes suivants (les chiffres correspondants aux chiffres sur l'image ci-dessus) @Oui #Oui $Oui %Oui Code : - Code:
-
=begin Advanced Text Effects(ATE) V1.0 by Samo, the thief. This script will evitate you doing your methods of special drawing text manually. You will be able to do an outline, a shadow, and something else, by only putting when you draw the text: (x,y,width,height,str,align,method) Name Description Type x x coordinate Integer y y coordinate Integer width width Integer height height Integer str string Integer align alignment: Integer Like in Micro Word 0 Left, 1 Medium, 2 Right. method The Method That String will indicate what we want. Look Down for a List. In a Normal window, a draw_text with outline should be like this: self.contents.draw_text(60,45,120,32,"Thanks Outline Script! Now i look Better!", 1, 'outline') List of Methods: 'outline' 'Shadow Wide' 'Shadow Small' 'Selected Item' 'Light Bisel' 'Small Bisel' 'Medium Bisel' This also comes with a message system(if you don't like it, just erase the part of Window_Mesagge) The message System Works in this Way. There are especial Characters that will define the type of effect to apply. Just put them, they will appear invisible: ~ No method is used in the message. It makes special characters appear. @ Outline # Small Shadow $ Big Shadow % Selected Item ^ Light Bisel & Small Bisel * Medium Bisel ` Text is Drawn Normally, text effects can appear in the message. =end
class Bitmap #----------------------------------------------------------------------- alias samo_outline_bitmap_draw_text draw_text #Alias of original Draw_text #------------------------------------------------------------------------ def draw_text(x, y, width, height, str, align = 0, method = 'normal') if method == 'outline' r = font.color.red #Takes the original color of the window by numbers g = font.color.green b = font.color.blue a = font.color.alpha font.color= Color.new(0,0,0) #Color Black draw_text(x - 1, y, width, height, str, align) draw_text(x + 1, y, width, height, str, align) draw_text(x , y+1, width, height, str, align) draw_text(x , y-1, width, height, str, align) font.color = Color.new(r,g,b,a) #Returns teh color no to normal samo_outline_bitmap_draw_text(x, y, width, height, str, align) #draw the text without outline end if method == 'Shadow Wide' r = font.color.red #Takes the original color of the window by numbers g = font.color.green b = font.color.blue a = font.color.alpha font.color = Color.new(0,0,0,75) draw_text(x +12, y + 4, width, height, str, align) font.color = Color.new(r,g,b,a) #Returns teh color no to normal samo_outline_bitmap_draw_text(x, y, width, height, str, align) #draw the text without outline end if method == 'Shadow Small' r = font.color.red #Takes the original color of the window by numbers g = font.color.green b = font.color.blue a = font.color.alpha font.color = Color.new(0,0,0,175) draw_text(x +3, y + 3, width, height, str, align) font.color = Color.new(r,g,b,a) #Returns teh color no to normal samo_outline_bitmap_draw_text(x, y, width, height, str, align) #draw the text without outline end if method == 'Selected Item' r = font.color.red #Takes the original color of the window by numbers g = font.color.green b = font.color.blue a = font.color.alpha font.color= Color.new(120,255,120,225) draw_text(x - 1, y, width, height, str, align) draw_text(x + 1, y, width, height, str, align) draw_text(x , y+1, width, height, str, align) draw_text(x , y-1, width, height, str, align) font.color = Color.new(r,g,b,a) #Returns teh color no to normal samo_outline_bitmap_draw_text(x, y, width, height, str, align) #draw the text without outline end if method == 'Light Bisel' r = font.color.red #Takes the original color of the window by numbers g = font.color.green b = font.color.blue a = font.color.alpha font.color= Color.new(0,0,0,255) draw_text(x + 1, y, width, height, str, align) draw_text(x , y+1, width, height, str, align) font.color = Color.new(r,g,b,a) #Returns teh color no to normal samo_outline_bitmap_draw_text(x, y, width, height, str, align) #draw the text without outline end if method == 'Small Bisel' r = font.color.red #Takes the original color of the window by numbers g = font.color.green b = font.color.blue a = font.color.alpha font.color= Color.new(0,0,0,255) draw_text(x + 1, y, width, height, str, align) draw_text(x , y+1, width, height, str, align) font.color= Color.new(125,125,125,255) draw_text(x - 1, y, width, height, str, align) draw_text(x , y-1, width, height, str, align) font.color = Color.new(r,g,b,a) #Returns teh color no to normal samo_outline_bitmap_draw_text(x, y, width, height, str, align) #draw the text without outline end if method == 'Medium Bisel' r = font.color.red #Takes the original color of the window by numbers g = font.color.green b = font.color.blue a = font.color.alpha font.color= Color.new(0,0,0,255) draw_text(x + 2, y, width, height, str, align) draw_text(x , y+2, width, height, str, align) draw_text(x + 2, y+2, width, height, str, align) font.color= Color.new(125,125,125,255) draw_text(x - 2, y, width, height, str, align) draw_text(x , y-2, width, height, str, align) draw_text(x - 2, y-2, width, height, str, align) font.color = Color.new(r,g,b,a) #Returns teh color no to normal samo_outline_bitmap_draw_text(x, y, width, height, str, align) #draw the text without outline end if method == 'normal' samo_outline_bitmap_draw_text(x, y, width, height, str, align) #draw the text without outline end end #----------------------------------------------------------------------- #----------------------------------------------------------------------- end
class Sprite_Timer < Sprite #-------------------------------------------------------------------------- def update super self.visible = $game_system.timer_working if $game_system.timer / Graphics.frame_rate != @total_sec self.bitmap.clear @total_sec = $game_system.timer / Graphics.frame_rate min = @total_sec / 60 sec = @total_sec % 60 text = sprintf("%02d:%02d", min, sec) self.bitmap.font.color.set(255, 255, 255) self.bitmap.draw_text(0,0,88,48, text, 1, true) end end end
#============================================================================== # ■ Window_Command #------------------------------------------------------------------------------
class Window_Command < Window_Selectable #-------------------------------------------------------------------------- #-------------------------------------------------------------------------- def draw_item(index, color) self.contents.font.color = color rect = Rect.new(4, 32 * index, self.contents.width - 8, 32) self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) self.contents.draw_text(rect.x,rect.y,rect.width,rect.height, @commands[index]) end end
#============================================================================== # ■ Window_PartyCommand #------------------------------------------------------------------------------
class Window_PartyCommand < Window_Selectable #-------------------------------------------------------------------------- def draw_item(index, color) self.contents.font.color = color rect = Rect.new(160 + index * 160 + 4, 0, 128 - 10, 32) self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) self.contents.draw_text(rect.x,rect.y,rect.width,rect.height, @commands[index], 1) end end
#============================================================================== # ** Window_Message #------------------------------------------------------------------------------ # This message window is used to display text. #==============================================================================
class Window_Message < Window_Selectable #-------------------------------------------------------------------------- # * 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 @method = 'normal' # If waiting for a message to be displayed if $game_temp.message_text != nil text = $game_temp.message_text if text.include?('~') not_effects = true @method = 'normal' else not_effects = false end # 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 unless not_effects == true if c == "@" @method = 'outline' next elsif c == "#" @method = 'Shadow Small' next elsif c == "$" @method = 'Shadow Wide' next elsif c == "%" @method = 'Selected Item' next elsif c == "^" @method = 'Light Bisel' next elsif c == "&" @method = 'Small Bisel' next elsif c == "`" @method = 'normal' next elsif c == "*" @method = 'Medium Bisel' next end end if c == "~" next end self.contents.draw_text(4 + x, 32 * y, 40, 32, c,0,@method) # 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 end |
|