RPG Creator : créez votre MMORPG ou RPG sans aucune connaissance en programmation


Disponible le 4 Juin !




- Jouez à votre jeu sur tablettes tactiles, Smartphones et navigateurs Web
- Personnalisez vos menus
- Dessinez facilement et rapidement vos cartes
- Créez des actions pour le combat A-RPG


www.rpgcreator.net


Heures au format UTC + 1 heure [ Heure d’été ]


Règles du forum


Consultez la liste des Scripts : cliquez ici



Publier un nouveau sujet Répondre au sujet  [ 27 messages ]  Aller à la page 1, 2, 3  Suivant
Auteur Message
 Sujet du message: Sprite_Text
MessagePublié: 13 Juin 2007, 17:51 
Roi
Roi
Avatar de l’utilisateur

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 ZanarkandC
Il 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écis

Voici une exemple:
Image

Bon making à tous.


Haut
 Profil  
 
 Sujet du message: Re: Sprite_Text
MessagePublié: 13 Juin 2007, 17:54 
Ancien membre du staff
Ancien membre du staff
Avatar de l’utilisateur

Inscrit le: 18 Fév 2007, 01:00
Messages: 2786
Localisation: Marseille
Niveau RPG Maker: Inopérant
Logiciel(s) préféré(s): RMXP
Point(s) Fort(s): Désossage
Points d'aide: 33/60

Créations :

Voir ses créations

Hey , je pense que ça peut être pas mal =O
Ca me fait penser à plusieurs systèmes sur les mmorpg , avec les signes au dessus des pnj , ou bien les phrases quand tu ouvres un magasin.
Si il y a des projets en cours du style , je suis certain que ça aidera Wink

Enfin , sinon il doit y avoir bien d'autres possibilité exploitables Wink

_________________
Ressources Final Fantasy - Ressources Mario
Ressources Pokémon - Ressources Zelda


Haut
 Profil  
 
 Sujet du message: Re: Sprite_Text
MessagePublié: 13 Juin 2007, 18:32 
Ancien membre du staff
Ancien membre du staff

Inscrit le: 07 Sep 2006, 00:00
Messages: 1165
Points d'aide: 0/60

Créations :

Voir ses créations

Moi ce systeme,
J'adore tout simplement.
Pour les A-RPG ca peut etre super bien pour afficher le nombre qu'on attaque au dessus de l'event.
Je te remercie pour l'avoir partagé Smile.
Bye et merci encore.


Haut
 Profil  
 
 Sujet du message: Re: Sprite_Text
MessagePublié: 13 Juin 2007, 22:06 
Bourgeois (Nv 1)

Inscrit le: 12 Mar 2007, 01:00
Messages: 218
Logiciel(s) préféré(s): RPG Maker XP
Point(s) Fort(s): Scénario
Sexe: Masculin
Points d'aide: 4/60

Créations :

Voir ses créations

Apparemment il ya un bug ^^" :
Image
C'est pas très visible mais il y est ecrit marchand n31 cela vous aura effleuré l'esprit ?^^" n40


Haut
 Profil  
 
 Sujet du message: Re: Sprite_Text
MessagePublié: 14 Juin 2007, 08:56 
Roi
Roi
Avatar de l’utilisateur

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

Hmm pourtant je l'ai pas mal tester pour être sur que ce genre de chose n'arrive pas ?

Pourrais-tu m'envoyer ta démo afin que je corrige mon script ?


Haut
 Profil  
 
 Sujet du message: Re: Sprite_Text
MessagePublié: 14 Juin 2007, 17:51 
Villageois (Nv 4)

Inscrit le: 17 Déc 2006, 01:00
Messages: 66
Points d'aide: 0/60

Créations :

Voir ses créations

Merci Matt mais tu peut me dire comment on fait pour afficher
la valeur contenue dans une variable dans le texte ?
C'est la chose la plus importante dans ce script Very Happy

Par exemple : v[1] qui indique le nombre la variable n°1
ou c[1] texte qui indique la couleur choisie

JE n'ai pas compris comment utilier cela dans le script


Haut
 Profil  
 
 Sujet du message: Re: Sprite_Text
MessagePublié: 14 Juin 2007, 18:31 
Roi
Roi
Avatar de l’utilisateur

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

Il suffit simplement de mettre la variable comme premier argument à la place du $text de mon exemple.

Exemple: tu veux afficher le contenu de la variable 1
Code: Tout sélectionner
$game_map.events[id].draw_text($game_variables[1])



edit:
Cloud500, si tu as ce bug, c'est que tu n'as pas utilisé correctement le script.

Il n'a pas été crée dans le but d'afficher en continu un message au dessus d'un event. Toi, tu as mis l'affichage en processus parralèle ce qui ne marche pas, car le script n'est pas conçu pour ça.

Le script marche lorsqu'il est utilisé avec "A l'appuie d'une touche" de façon à afficher durant un temps défini le message.

Pour faire ce que tu souhaites, un autre script serait possible, mais ce n'est pas le but du mien.


Haut
 Profil  
 
 Sujet du message: Re: Sprite_Text
MessagePublié: 17 Juin 2007, 14:48 
Villageois (Nv 4)

Inscrit le: 17 Déc 2006, 01:00
Messages: 66
Points d'aide: 0/60

Créations :

Voir ses créations

Code: Tout sélectionner
$game_map.events[id].draw_text($game_variables[1])


DEsolé de t'embeter encore , mais quand je met sa , sa m'affiche le nombre que j'ai mis entre crochet et pas la variable .
Tu peut me donner une demo avec totue les foctions du script stp ?
JE t'en serait reconaisant happy


Haut
 Profil  
 
 Sujet du message: Re: Sprite_Text
MessagePublié: 18 Juin 2007, 10:37 
Roi
Roi
Avatar de l’utilisateur

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

C'est tout bêtement que ta variable 1 est égal à 1 ...

Tu dois remplacer le 1 par la variable de ton choix.
Si c'est la variable 2, tu mets $game_variables[2], ainsi de suite...


Haut
 Profil  
 
 Sujet du message: Re: Sprite_Text
MessagePublié: 18 Juin 2007, 15:44 
Villageois (Nv 4)

Inscrit le: 17 Déc 2006, 01:00
Messages: 66
Points d'aide: 0/60

Créations :

Voir ses créations

Sa y est , j'ai réussit merci beaucoup.
En fait , j'avais oublier de mettre un temps a processus paralelle XD
J'ai encore une ultime chose a te demander (JE sais , je suis un boulet n6 )
COmment on fait pou changer la couleur en plein jeu , et non par default dans le script ? Car par exeple ... Si un event est enmpoisonné , je veut que sa soit vert , etc ...
MErci d'avance


Haut
 Profil  
 
Afficher les messages depuis:  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 27 messages ]  Aller à la page 1, 2, 3  Suivant

Heures au format UTC + 1 heure [ Heure d’été ]


Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 2 invités


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Rechercher pour:
Sauter vers:  
cron
RPG Creative Forum version 5 ; Tous droits réservés
phpBB Group (Traduit par Xaphos)
Optimisé pour une résolution 1024*728