| Roi |
 |
 |
Inscrit le: 13 Aoû 2006, 00:00 Messages: 2417 Localisation: Montréal, QC Logiciel(s) préféré(s): RMXP, VS2008 Point(s) Fort(s): Script Points d'aide: Illimité
Créations :
- Séparation d'inventaire
- Sprite_Text
Voir ses créations
|
Bonjour, Voici un script de ma compostion suite à la demande de ZanarkandCIl permet d'afficher un texte au dessus d'un event. Toutes les explications sont dans l'entête du script. - Code: Tout sélectionner
#=============================================================================== # Sprite_Text #------------------------------------------------------------------------------- # Auteur : Mat # Date : 20/11/2007 # Version : 1.3 # Distribution : RPG Creative #------------------------------------------------------------------------------- # Ce script permet d'afficher un texte au dessus d'un event #------------------------------------------------------------------------------- # Installation : # - Créez un nouveau script au dessus de main # - Copiez-y le script #------------------------------------------------------------------------------- # Utilisation : # - Créez un event et repérez son id # - Faites "Insérer un script..." # - Placez le code suivant : # text = [Votre texte] # $game_map.events[id].draw_text(text, couleur) # où id est l'id que vous avez repérer ,[Votre texte] le texte que vous # voulez afficher et couleur, un des indices couleur par defaut de RMXP # L'indice de couleur n'est pas obligatoire : le texte aura la couleur # par defaut defini dans le script #------------------------------------------------------------------------------- # Personnalisation : # Police du Texte : TEXT_FONT = "Arial" # Taille du texte : TEXT_SIZE = 32 # Couleur par default du texte : TEXT_COLOR = Color.new(0,0,0) # Temp d'affichage du texte : TEXT_DURATION = 120 #===============================================================================
#=============================================================================== # ■ Sprite_Text #------------------------------------------------------------------------------- # Cette classe permet d'afficher un texte au dessus d'un event #=============================================================================== class Sprite_Text < Sprite #============================================================================= # ● initialize # viewport : la couche ou va s'écrire le texte # text : le texte à écrire # event_id : l'event au dessus du quelle on va écrire #----------------------------------------------------------------------------- # Méthode de création du sprite #============================================================================= def initialize(viewport, text, event_id, id_color) super(viewport) @text = text.to_s @event_id = event_id @id_color = id_color @_text_duration = 0 $scene.sprite_texts.push(self) draw_text end #============================================================================= # ● draw_text #----------------------------------------------------------------------------- # Méthode d'écriture du texte #============================================================================= def draw_text dispose_text bitmap = Bitmap.new(160, 48) bitmap.font.name = TEXT_FONT bitmap.font.size = TEXT_SIZE case @id_color when 0 #Blanc bitmap.font.color = Color.new(255,255,255) when 1 #Bleu fonce bitmap.font.color = Color.new(0,0,128) when 2 #Rouge bitmap.font.color = Color.new(255,0,0) when 3 #Vert bitmap.font.color = Color.new(0,255,0) when 4 #Bleu Clair bitmap.font.color = Color.new(0,0,255) when 5 #Violet bitmap.font.color = Color.new(255,0,255) when 6 #Jaune bitmap.font.color = Color.new(255,255,0) when 7 bitmap.font.color = Color.new(128,128,128) else #Couleur par default bitmap.font.color = TEXT_COLOR end bitmap.draw_text(-1, 12-1, 160, 36, @text, 1) bitmap.draw_text(+1, 12-1, 160, 36, @text, 1) bitmap.draw_text(-1, 12+1, 160, 36, @text, 1) bitmap.draw_text(+1, 12+1, 160, 36, @text, 1) bitmap.draw_text(0, 12, 160, 36, @text, 1)
@_text_sprite = ::Sprite.new(self.viewport) @_text_sprite.bitmap = bitmap @_text_sprite.ox = 80 @_text_sprite.oy = 20 @_text_sprite.x = $game_map.events[@event_id].x * 32 + 18 @_text_sprite.y = $game_map.events[@event_id].y * 32 - 50 @_text_sprite.z = 3000 @_text_duration = TEXT_DURATION update end #============================================================================= # ● dispose_text #----------------------------------------------------------------------------- # Méthode de supression du text #============================================================================= def dispose_text if @_text_sprite != nil @_text_sprite.bitmap.dispose @_text_sprite.dispose @_text_sprite = nil @_text_duration = 0 end end
#============================================================================= # ● update #----------------------------------------------------------------------------- # Méthode de mise à jour du texte #============================================================================= def update super if @_text_duration > 0 @_text_duration -= 1 @_text_sprite.x = ($game_map.events[@event_id].x * 32 + 18) - ($game_map.display_x / 4 ) @_text_sprite.y = ($game_map.events[@event_id].y * 32 - 50) - ($game_map.display_y / 4) @_text_sprite.opacity = 256 - (12 - @_text_duration) * 32 if @_text_duration == 0 dispose_text end end end end
#=============================================================================== # ■ Scene_Map #=============================================================================== class Scene_Map attr_reader :sprite_texts #============================================================================= # ● update #----------------------------------------------------------------------------- # Méthode de mise à jour de la map #============================================================================= def initialize @sprite_texts = [] end alias sprite_text_main main def main sprite_text_main for sprites in @sprite_texts sprites.dispose_text end end
#============================================================================= # ● update #----------------------------------------------------------------------------- # Méthode de mise à jour de la map #============================================================================= def update loop do $game_map.update $game_system.map_interpreter.update $game_player.update $game_system.update $game_screen.update unless $game_temp.player_transferring break end transfer_player if $game_temp.transition_processing break end end @spriteset.update for sprite in sprite_texts if sprite != nil sprite.update end end @message_window.update if $game_temp.gameover $scene = Scene_Gameover.new return end if $game_temp.to_title $scene = Scene_Title.new return end if $game_temp.transition_processing $game_temp.transition_processing = false if $game_temp.transition_name == "" Graphics.transition(20) else Graphics.transition(40, "Graphics/Transitions/" + $game_temp.transition_name) end end if $game_temp.message_window_showing return end if $game_player.encounter_count == 0 and $game_map.encounter_list != [] unless $game_system.map_interpreter.running? or $game_system.encounter_disabled n = rand($game_map.encounter_list.size) troop_id = $game_map.encounter_list[n] if $data_troops[troop_id] != nil $game_temp.battle_calling = true $game_temp.battle_troop_id = troop_id $game_temp.battle_can_escape = true $game_temp.battle_can_lose = false $game_temp.battle_proc = nil end end end if Input.trigger?(Input::B) unless $game_system.map_interpreter.running? or $game_system.menu_disabled $game_temp.menu_calling = true $game_temp.menu_beep = true end end if $DEBUG and Input.press?(Input::F9) $game_temp.debug_calling = true end unless $game_player.moving? if $game_temp.battle_calling call_battle elsif $game_temp.shop_calling call_shop elsif $game_temp.name_calling call_name elsif $game_temp.menu_calling call_menu elsif $game_temp.save_calling call_save elsif $game_temp.debug_calling call_debug end end end #============================================================================= # ● transfer_player #----------------------------------------------------------------------------- # Méthode de changement de carte #============================================================================= alias sprite_text_transfer_player transfer_player def transfer_player for sprites in @sprite_texts sprites.dispose_text end sprite_text_transfer_player end end
#=============================================================================== # ■ Game_Event #------------------------------------------------------------------------------- # Cette classe représente les events #=============================================================================== class Game_Event < Game_Character #============================================================================= # ● draw_text #----------------------------------------------------------------------------- # Méthode qui permet à l'event d'écrire un texte #============================================================================= def draw_text(text, id_color = 8) Sprite_Text.new(nil,text, self.id, id_color) end end
Si vous rencontrez une erreur, merci de me le signaler par MP avec le message d'erreur précisVoici une exemple:  Bon making à tous.
|
|