Accueil du SiteAccueil du Site  AccueilAccueil  Dernières imagesDernières images  RechercherRechercher  ConnexionConnexion  S'enregistrerS'enregistrer  



Le Deal du moment : -17%
SSD interne Crucial SSD P3 1To NVME à ...
Voir le deal
49.99 €

Partagez
 

 Affichage partiel des images

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Erwill
Paysan (niveau 1)
Paysan (niveau 1)
Erwill

Messages postés : 1
Date d'inscription : 26/12/2017
Jauge LPC :
Affichage partiel des images 89152714009 / 1009 / 100Affichage partiel des images 8915271400


Affichage partiel des images Empty
MessageSujet: Affichage partiel des images   Affichage partiel des images EmptyMar 26 Déc 2017 - 16:07

Affichage partiel des images

Ce script permet de créer une zone de l'image qui sera visible, un peu comme les spritesheets ou les autres types de bitmap de rpg maker. (Les characters, les animations, les autotiles, etc.)

À la base je l'ai créé que pour mon projet, mais j'ai décidé de le partager pour d'autres utilisateurs.

Quel est l'utilité de ce script ?

Par exemple, si vous utilisez les images pour afficher les facesets sur XP, au lieu d'avoir 50 fichiers pour 50 facesets, vous pouvez tous les réunir dans un seul et même fichier.
Vous pouvez également utiliser ce script pour en faire des planches de sprite un peu comme les dernières versions de RPG Maker 2003.


Les commandes :

Le script ajoute deux commandes pour les images.

Code:
$game_screen.pictures[ID].rect(x, y, width, height)
Elle permet de créer et de paramétrer la zone d'affichage de l'image.
- ID = l'id de l'image.
- X = La position X de la zone d'affichage sur l'image.
La position 0 de X est sur le bord gauche de l'image.
- Y = La position Y de la zone d'affichage sur l'image.
La position 0 de Y est sur le bord haut de l'image.
- width = La longueur de la zone d'affichage.
- height = La hauteur de la zone d'affichage.


Code:
$game_screen.pictures[ID].rectchange(duration, x, y, width, height)
Elle permet de modifier la zone d'affichage de l'image.
- ID = l'id de l'image.
- Duration = La durée de la modification en frame.
- X = La position X de la zone d'affichage sur l'image.
La position 0 de X est sur le bord gauche de l'image.
- Y = La position Y de la zone d'affichage sur l'image.
La position 0 de Y est sur le bord haut de l'image.
- width = La longueur de la zone d'affichage.
- height = La hauteur de la zone d'affichage.

Le script :

À mettre au-dessus de main.

Code:
#==============================================================================
# ** Affichage partiel des images                          Par Erwill
#------------------------------------------------------------------------------
#  Ce script ajoute une option à l'affichage de l'image : la possibilité de
#  sélectionner qu'une partie qui sera affichée, un peu comme le principe des
#  spritesheets.
#------------------------------------------------------------------------------
#  Mode d'emploi :
#  
#  Voici les commandes ajoutées :
#
#  - $game_screen.pictures[ID].rect(x, y, width, height) Permet de sélectionner la partie qui sera affichée.
#     Elle permet de créer et de paramétrer la zone d'affichage de l'image.
#      - ID = l'id de l'image.
#      - X = La position X de la zone d'affichage sur l'image.
#      - Y = La position Y de la zone d'affichage sur l'image.
#      - width = La longueur de la zone d'affichage.
#      - height = La hauteur de la zone d'affichage.
#
#  - $game_screen.pictures[ID].rectchange(duration, x, y, width, height) Permet de déplacer la partie affichée. (ne fonctionne pas s'il n'y a pas eu la première commande pour l'image)
#     Elle permet de modifier la zone d'affichage de l'image.
#      - ID = l'id de l'image.
#      - Duration = La durée de la modification en frame.
#      - X = La position X de la zone d'affichage sur l'image.
#      - Y = La position Y de la zone d'affichage sur l'image.
#      - width = La longueur de la zone d'affichage.
#      - height = La hauteur de la zone d'affichage.
#
#==============================================================================


#==============================================================================
# ** Game_Picture
#==============================================================================
class Game_Picture
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader   :number                   # picture number
  attr_reader   :name                     # file name
  attr_reader   :origin                   # starting point
  attr_reader                           # x-coordinate
  attr_reader   :y                        # y-coordinate
  attr_reader   :zoom_x                   # x directional zoom rate
  attr_reader   :zoom_y                   # y directional zoom rate
  attr_reader   :opacity                  # opacity level
  attr_reader   :blend_type               # blend method
  attr_reader   :tone                     # color tone
  attr_reader   :angle                    # rotation angle
  attr_reader   :recx                     # Rect X
  attr_reader   :recy                     # Rect Y
  attr_reader   :recw                     # Rect width
  attr_reader   :rech                     # Rect Height
  attr_reader   :rece                     # Rect enable
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     number : picture number
  #--------------------------------------------------------------------------
  def initialize(number)
    @number = number
    @name = ""
    @origin = 0
    @x = 0.0
    @y = 0.0
    @zoom_x = 100.0
    @zoom_y = 100.0
    @opacity = 255.0
    @blend_type = 1
    @duration = 0
    @target_x = @x
    @target_y = @y
    @target_zoom_x = @zoom_x
    @target_zoom_y = @zoom_y
    @target_opacity = @opacity
    @tone = Tone.new(0, 0, 0, 0)
    @tone_target = Tone.new(0, 0, 0, 0)
    @tone_duration = 0
    @angle = 0
    @rotate_speed = 0
    @recx = 0
    @recy = 0
    @recw = 0
    @rech = 0
    @rece = 0
    @rect_duration = 0
  end
  #--------------------------------------------------------------------------
  # * Show Picture
  #     name       : file name
  #     origin     : starting point
  #     x          : x-coordinate
  #     y          : y-coordinate
  #     zoom_x     : x directional zoom rate
  #     zoom_y     : y directional zoom rate
  #     opacity    : opacity level
  #     blend_type : blend method
  #--------------------------------------------------------------------------
  def show(name, origin, x, y, zoom_x, zoom_y, opacity, blend_type)
    @name = name
    @origin = origin
    @x = x.to_f
    @y = y.to_f
    @zoom_x = zoom_x.to_f
    @zoom_y = zoom_y.to_f
    @opacity = opacity.to_f
    @blend_type = blend_type
    @duration = 0
    @target_x = @x
    @target_y = @y
    @target_zoom_x = @zoom_x
    @target_zoom_y = @zoom_y
    @target_opacity = @opacity
    @tone = Tone.new(0, 0, 0, 0)
    @tone_target = Tone.new(0, 0, 0, 0)
    @tone_duration = 0
    @angle = 0
    @rotate_speed = 0
    @rect_target_x = 0
    @rect_target_y = 0
    @rect_target_width = 0
    @rect_target_height = 0
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    if @duration >= 1
      d = @duration
      @x = (@x * (d - 1) + @target_x) / d
      @y = (@y * (d - 1) + @target_y) / d
      @zoom_x = (@zoom_x * (d - 1) + @target_zoom_x) / d
      @zoom_y = (@zoom_y * (d - 1) + @target_zoom_y) / d
      @opacity = (@opacity * (d - 1) + @target_opacity) / d
      @duration -= 1
    end
    if @tone_duration >= 1
      d = @tone_duration
      @tone.red = (@tone.red * (d - 1) + @tone_target.red) / d
      @tone.green = (@tone.green * (d - 1) + @tone_target.green) / d
      @tone.blue = (@tone.blue * (d - 1) + @tone_target.blue) / d
      @tone.gray = (@tone.gray * (d - 1) + @tone_target.gray) / d
      @tone_duration -= 1
    end
    if @rotate_speed != 0
      @angle += @rotate_speed / 2.0
      while @angle < 0
        @angle += 360
      end
      @angle %= 360
    end
    if @rect_duration >= 1
      @recx = (@recx * (@rect_duration - 1) + @rect_target_x) / @rect_duration
      @recy = (@recy * (@rect_duration - 1) + @rect_target_y) / @rect_duration
      @recw = (@recw * (@rect_duration - 1) + @rect_target_width) / @rect_duration
      @rech = (@rech * (@rect_duration - 1) + @rect_target_height) / @rect_duration
      @rect_duration -= 1
    end
  end
  #--------------------------------------------------------------------------
  # * rect(x, y, width, height)
  #     Elle permet de créer et de paramétrer la zone d'affichage de l'image.
  #      - ID = l'id de l'image.
  #      - X = La position X de la zone d'affichage sur l'image.
  #      - Y = La position Y de la zone d'affichage sur l'image.
  #      - width = La longueur de la zone d'affichage.
  #      - height = La hauteur de la zone d'affichage.
  #--------------------------------------------------------------------------
  def rect(x, y, width, height)
    @recx = x
    @recy = y
    @recw = width
    @rech = height
    @rece = 1
  end
  #--------------------------------------------------------------------------
  # * rectchange(duration, x, y, width, height)
  #     Elle permet de modifier la zone d'affichage de l'image.
  #      - ID = l'id de l'image.
  #      - Duration = La durée de la modification en frame.
  #      - X = La position X de la zone d'affichage sur l'image.
  #      - Y = La position Y de la zone d'affichage sur l'image.
  #      - width = La longueur de la zone d'affichage.
  #      - height = La hauteur de la zone d'affichage.
  #--------------------------------------------------------------------------
  def rectchange(duration, x, y, width, height)
    @rect_duration = duration
    @rect_target_x = x
    @rect_target_y = y
    @rect_target_width = width
    @rect_target_height = height
  end
end




#==============================================================================
# ** Sprite_Picture
#==============================================================================
class Sprite_Picture < Sprite
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    # If picture file name is different from current one
    if @picture_name != @picture.name
      # Remember file name to instance variables
      @picture_name = @picture.name
      # If file name is not empty
      if @picture_name != ""
        # Get picture graphic
        self.bitmap = RPG::Cache.picture(@picture_name)
      end
    end
    # If file name is empty
    if @picture_name == ""
      # Set sprite to invisible
      self.visible = false
      return
    end
    # Set sprite to visible
    self.visible = true
    # Set transfer starting point
    if @picture.origin == 0
      self.ox = 0
      self.oy = 0
    else
      if @picture.rece==1 then
      self.ox = @picture.recw / 2
      self.oy = @picture.rech / 2
      else
      self.ox = self.bitmap.width / 2
      self.oy = self.bitmap.height / 2
      end
    end
    # Set sprite coordinates
    self.x = @picture.x
    self.y = @picture.y
    self.z = @picture.number
    # Set zoom rate, opacity level, and blend method
    self.zoom_x = @picture.zoom_x / 100.0
    self.zoom_y = @picture.zoom_y / 100.0
    self.opacity = @picture.opacity
    self.blend_type = @picture.blend_type
    # Set rotation angle and color tone
    self.angle = @picture.angle
    self.tone = @picture.tone
    if @picture.rece==1 then
    self.src_rect.set(@picture.recx, @picture.recy, @picture.recw, @picture.rech)
    end
  end
end

Exemple d'utilisation :

On va prendre un fichier de facesets et on va l'afficher dans le jeu avec la commande correspondante, ça donne ça en gros :
Spoiler:

Maintenant je veux afficher uniquement le troisième faceset du bas, je n'ai qu'à entrer la commande pour créer la zone d'affichage :
Affichage partiel des images INMWG4

Ce qui donne ça :
Spoiler:
Revenir en haut Aller en bas
Zexion
Administrateur
Administrateur
Zexion

Masculin
Messages postés : 6228
Date d'inscription : 04/01/2012
Jauge LPC :
Affichage partiel des images 891527140097 / 10097 / 100Affichage partiel des images 8915271400

Affichage partiel des images Membre15
Affichage partiel des images Event-10
Affichage partiel des images Altrui10
Affichage partiel des images Action10
Affichage partiel des images Travai10
Affichage partiel des images Collec10
Affichage partiel des images Collec11
Affichage partiel des images Collec12
Affichage partiel des images Staffe11
Affichage partiel des images Dessin10


Affichage partiel des images Empty
MessageSujet: Re: Affichage partiel des images   Affichage partiel des images EmptyJeu 4 Jan 2018 - 1:12

Un chouette script.
Merci du partage, je t'ajoute des points. Smile
Revenir en haut Aller en bas
 
Affichage partiel des images
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [VX ACE] affichage des hp centrer
» [VX] HUD - Affichage de l'équipement sur la map
» [VX]Affichage animé du nom des maps.
» Affichage aisé de textes à l'écran
» [VX] Images...

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Le Palais Créatif :: ~ PARTAGE ~ :: Scripts et plugins :: RPG Maker XP :: Autres-
Sauter vers: