LODM (L'Oasis des Makers)
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

LODM (L'Oasis des Makers)

Forum d'étude sur le Making RMXP
 
AccueilPortailRechercherDernières imagesS'enregistrerConnexion
Le Deal du moment :
Cdiscount : -30€ dès 300€ ...
Voir le deal

 

 Génerer un bitmap de la Map courante

Aller en bas 
4 participants
AuteurMessage
Roys
Guide
Guide
Roys


Nombre de messages : 111
Age : 52
Projet Principal : Le Crépuscule des Dieux
Aide Recherchée pour : des chara aRPG
Surnom : Scripteur Monomaniaque
Date d'inscription : 24/02/2007

Génerer un bitmap de la Map courante Empty
MessageSujet: Génerer un bitmap de la Map courante   Génerer un bitmap de la Map courante Icon_minitimeVen 23 Mar - 14:21

Bonjour

Voici un script utile qui vous permettra de générer un bitmap de la map en cours de jeu. Ceci vous permettra plein d'effet ouvert à votre imagination

Par exemple $game_map.bitmap génère un bitmap de la map en cours de jeu, et peut être traiter l'affecter à un sprite.

A vous de jouer

Code:
#==============================================================================
# GAME MAP BITMAP
# Stephane, Roys, Royer
# http://lodm.forumactif.com/index.htm
# Mars 2007
#------------------------------------------------------------------------------
# Ajoute la methode bitmap à la classe Game_Map
# Cette méthode renvoi un bitmap de la carte courante en jeu
#==============================================================================

Position = 15

    #--------------------------------------------------------------------------
    # Auto-Tiles
    #--------------------------------------------------------------------------
    Autotiles = [
      [ [27, 28, 33, 34], [ 5, 28, 33, 34], [27,  6, 33, 34], [ 5,  6, 33, 34],
        [27, 28, 33, 12], [ 5, 28, 33, 12], [27,  6, 33, 12], [ 5,  6, 33, 12] ],
      [ [27, 28, 11, 34], [ 5, 28, 11, 34], [27,  6, 11, 34], [ 5,  6, 11, 34],
        [27, 28, 11, 12], [ 5, 28, 11, 12], [27,  6, 11, 12], [ 5,  6, 11, 12] ],
      [ [25, 26, 31, 32], [25,  6, 31, 32], [25, 26, 31, 12], [25,  6, 31, 12],
        [15, 16, 21, 22], [15, 16, 21, 12], [15, 16, 11, 22], [15, 16, 11, 12] ],
      [ [29, 30, 35, 36], [29, 30, 11, 36], [ 5, 30, 35, 36], [ 5, 30, 11, 36],
        [39, 40, 45, 46], [ 5, 40, 45, 46], [39,  6, 45, 46], [ 5,  6, 45, 46] ],
      [ [25, 30, 31, 36], [15, 16, 45, 46], [13, 14, 19, 20], [13, 14, 19, 12],
        [17, 18, 23, 24], [17, 18, 11, 24], [41, 42, 47, 48], [ 5, 42, 47, 48] ],
      [ [37, 38, 43, 44], [37,  6, 43, 44], [13, 18, 19, 24], [13, 14, 43, 44],
        [37, 42, 43, 48], [17, 18, 47, 48], [13, 18, 43, 48], [ 1,  2,  7,  8] ]
    ]

class Game_Map

    #--------------------------------------------------------------------------
    # BITMAP
    # Génère un bitmap de la map en cours de jeu
    #--------------------------------------------------------------------------
    def bitmap
      #----------------------
      # Creé le bitmap copie de la map
      @copie_map = Bitmap.new(width*32,height*32)
      tiles = []
      @tileset_bitmap= RPG::Cache.tileset(@tileset_name)
      dx=@display_x/4
      dy=@display_y/4
      # Parcours toutes la map
      # Priorités
      for p in 0..5
        # Couches RM
        for z in 0...data.zsize
          # coordonnées y
          for y in 0...data.ysize
            # coordonnées x
            for x in 0...data.xsize
              # Collects Tile ID
              id = data[x, y, z]
              # tile 0 inutile
              next if id == 0
              # Test qu'on est à la bonne priorité
              next unless p == @priorities[id]
              # Choix d'affichage
              id < 384 ? draw_autotile(x, y, p, id) : draw_tile(x, y, p, id)
            end
          end
        end
      end
      return @copie_map
    end

    #--------------------------------------------------------------------------
    # DRAW TILE
    #--------------------------------------------------------------------------
    def draw_tile(x, y, z, id)
      return if @tileset_bitmap==nil
      rect = Rect.new((id - 384) % 8 * 32, (id - 384) / 8 * 32, 32, 32)
      # Calcul des coordonnées
      x *= 32
      y *= 32
      # Copie le carreau
      @copie_map.blt(x, y, @tileset_bitmap, rect)
    end
   
    #--------------------------------------------------------------------------
    # DRAW AUTOTILE
    #--------------------------------------------------------------------------
    def draw_autotile(x, y, z, tile_id)
      autotile = RPG::Cache.autotile(@autotile_names[tile_id / 48 - 1])
      # Reconfigure Tile ID
      tile_id %= 48
      bitmap = Bitmap.new(32, 32)
      # Récupère l Auto-Tile
      tiles = Autotiles[tile_id / 8][tile_id % 8]
      # Gère l'Animation
      anim = (Graphics.frame_count / Position) % (autotile.width / 96) * 96
      for i in 0...4
        tile_position = tiles[i] - 1
        src_rect = Rect.new(tile_position % 6 * 16 + anim, tile_position / 6 * 16, 16, 16)
        bitmap.blt(i % 2 * 16, i / 2 * 16, autotile, src_rect)
      end
      # Calcul des coordonnées
      x *= 32
      y *= 32
      # Copie l'autotile
      @copie_map.blt(x, y, bitmap, Rect.new(0, 0, 32,32))
    end
end


Dernière édition par le Ven 18 Mai - 15:01, édité 2 fois
Revenir en haut Aller en bas
https://lodm.forumactif.com
Corbaque
Chercheur



Nombre de messages : 10
Age : 33
Projet Principal : X-Shot II
Surnom : Lordryk
Date d'inscription : 11/03/2007

Génerer un bitmap de la Map courante Empty
MessageSujet: Re: Génerer un bitmap de la Map courante   Génerer un bitmap de la Map courante Icon_minitimeDim 25 Mar - 10:43

La fameuse question, est ce qu'il contient aussi les events ? ^^

Sinon c'est très propre, bravo, je pense m'en servir d'ici peu.
Revenir en haut Aller en bas
http://rpgmxp.ch
Siegfried
Guide
Guide



Nombre de messages : 37
Age : 37
Projet Principal : Legacy of Judge : Veil of Oblivion
Date d'inscription : 26/02/2007

Génerer un bitmap de la Map courante Empty
MessageSujet: Re: Génerer un bitmap de la Map courante   Génerer un bitmap de la Map courante Icon_minitimeLun 26 Mar - 16:16

Super pratique.
J'avais eu des problèmes à convertir le script minimap à l'isomètrique, alors qu'avec ça, ça ira vite. ^^
Revenir en haut Aller en bas
Roys
Guide
Guide
Roys


Nombre de messages : 111
Age : 52
Projet Principal : Le Crépuscule des Dieux
Aide Recherchée pour : des chara aRPG
Surnom : Scripteur Monomaniaque
Date d'inscription : 24/02/2007

Génerer un bitmap de la Map courante Empty
MessageSujet: Re: Génerer un bitmap de la Map courante   Génerer un bitmap de la Map courante Icon_minitimeMar 27 Mar - 4:07

Nop, ca ne contient pas les events pour cette version. Comme vous l'avez vu pour mon jeu, j'avais une version avec les events mais elle n'etait pas fiable à 100% (ca vous l'aez peut etre pas vu car je l'ai retiré Wink )
Je proposerais (ou qq un ici Smile ) une amélioration incluant les events dès que possible, c'est une petite prise de tête pour placer exactement l'event à la bonne couche et priorité
Revenir en haut Aller en bas
https://lodm.forumactif.com
kriss
Chercheur
kriss


Nombre de messages : 9
Age : 46
Projet Principal : Monolithe
Date d'inscription : 28/02/2007

Génerer un bitmap de la Map courante Empty
MessageSujet: Re: Génerer un bitmap de la Map courante   Génerer un bitmap de la Map courante Icon_minitimeMar 3 Avr - 10:21

j'utilise un script "appareil photo" permettant de prendre une image de la scene courante AVEC event.
Ca créer une image dans un repertoire, que l'on peut visualiser dans un menu ET que l'on peut supprimer via ce même menu.
Cerise sur le gateau, il est possible d'activer des interrupteurs si un certain event est présent sur la map au moment de la prise de photo...
Il faut que je retrouve le script et l'explication complete et je posterais dans tres peu de temps (il a été posté au départ dans Facto)
Revenir en haut Aller en bas
Corbaque
Chercheur



Nombre de messages : 10
Age : 33
Projet Principal : X-Shot II
Surnom : Lordryk
Date d'inscription : 11/03/2007

Génerer un bitmap de la Map courante Empty
MessageSujet: Re: Génerer un bitmap de la Map courante   Génerer un bitmap de la Map courante Icon_minitimeMar 3 Avr - 12:21

Hu hu hu

L'intéret de la technique de Roys est de n'avoir que les tiles affichés.

Pour moi ça signifie une seconde de lague en moins, et plus de libertées... le pied !

Pour ça que j'avais besoin des events ^^

Merci tout de même Kriss, mais lorsqu'un script comme ça se promenne, si ce n'était pas moi, ça aurait été Fabien, ou TLN, ou Roys, ou Sunmat, ou Krazplay, ou encore Tonyryu, ou même Corwin que sais-je encore ^^
Revenir en haut Aller en bas
http://rpgmxp.ch
Siegfried
Guide
Guide



Nombre de messages : 37
Age : 37
Projet Principal : Legacy of Judge : Veil of Oblivion
Date d'inscription : 26/02/2007

Génerer un bitmap de la Map courante Empty
MessageSujet: Re: Génerer un bitmap de la Map courante   Génerer un bitmap de la Map courante Icon_minitimeVen 18 Mai - 14:05

@sprite = Spriteset_Map.new
A mettre dans le main d'une Window pour afficher la map en fond avec events. Smile
Revenir en haut Aller en bas
Contenu sponsorisé





Génerer un bitmap de la Map courante Empty
MessageSujet: Re: Génerer un bitmap de la Map courante   Génerer un bitmap de la Map courante Icon_minitime

Revenir en haut Aller en bas
 
Génerer un bitmap de la Map courante
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
LODM (L'Oasis des Makers) :: Groupe pour Scripts :: Effets Graphiques-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser