Pokémon Script Project Forum Index

Manuel | Search
 Information des admins 
Si vous désirez parler de PSP ou obtenir du soutient là dessus, merci d'aller faire un tour sur https://pokemonworkshop.com/forum/index.php Imbécile heureux

Tilemap 16x16
Goto page: <  1, 2
 
Post new topic   Reply to topic    Pokémon Script Project Forum Index -> Game Making -> Ressources techniques -> Scripts
Previous topic :: Next topic   
Author Message
Pαlвσlѕку
Team SDK


Joined: 17 Aug 2008
Posts: 5,983
Masculin

PostPosted: Tue 13 Jul - 14:13 (2010)    Post subject: Tilemap 16x16

Avec le tutoriel de Youri, vous pouvez pas aller dans l'eau.
J'ai fusionné le surf avec le NM7.

Si vous enlevez le NM7, impossible de surfer. La solution ? Remettre le code du surf à son emplacement original.
Back to top
Skype
Publicité






PostPosted: Tue 13 Jul - 14:13 (2010)    Post subject: Publicité

PublicitéSupprimer les publicités ?
Back to top
Warp'
Membre


Joined: 21 Aug 2008
Posts: 1,353
Localisation: Québec

PostPosted: Tue 13 Jul - 14:33 (2010)    Post subject: Tilemap 16x16

Pαlвσlѕку wrote:

Avec le tutoriel de Youri, vous pouvez pas aller dans l'eau.
J'ai fusionné le surf avec le NM7.

Si vous enlevez le NM7, impossible de surfer. La solution ? Remettre le code du surf à son emplacement original.

On peut surfer. (Vidéo à l'appui)
http://www.sendspace.com/file/byekxq
Désolé de le mettre en fichier, la flemme de l'héberger.
Back to top
Pαlвσlѕку
Team SDK


Joined: 17 Aug 2008
Posts: 5,983
Masculin

PostPosted: Tue 13 Jul - 14:52 (2010)    Post subject: Tilemap 16x16

Très curieux que ça fonctionne. :?

Normalement ça ne devrait pas.
Back to top
Skype
Warp'
Membre


Joined: 21 Aug 2008
Posts: 1,353
Localisation: Québec

PostPosted: Tue 13 Jul - 14:59 (2010)    Post subject: Tilemap 16x16

Ben, tant mieux si ça fonctionne Imbécile heureux Même si j'.en ai pas besoin tout de suite, c'était nécessaire de tester. et ça marche Imbécile heureux
Back to top
Qwerty
Animateur
Animateur


Joined: 29 Oct 2009
Posts: 1,411
a.k.a. Walven Masculin

PostPosted: Tue 13 Jul - 20:29 (2010)    Post subject: Tilemap 16x16

Waooh, ton gars est magicien, il marche sur l'eau.
Back to top
Warp'
Membre


Joined: 21 Aug 2008
Posts: 1,353
Localisation: Québec

PostPosted: Tue 13 Jul - 20:31 (2010)    Post subject: Tilemap 16x16

Qwerty wrote:

Waooh, ton gars est magicien, il marche sur l'eau.
Le chara de SURF n'est pas encore fait...
Back to top
Nuri Yuri
Team SDK


Joined: 15 Oct 2008
Posts: 6,383
~Entity~
Localisation: Nancy
Non renseigné (Visible...)
ID Steam: Nuri_Yuri

PostPosted: Wed 14 Jul - 12:52 (2010)    Post subject: Tilemap 16x16

Palb' si il peux surfer c'est peut être parce que l'évent commun surf existe toujours dans PSP DS ...

Puis mon Script (que vous prenez pour un tuto :? ) lui est la classe Tilemap qui elle sert a assembler les tiles de la map (bon il est pas parfait) donc si il y a des probleme du coté animations et co.
c'est tout simplement parce que les script RMXP sont pas fait pour du Viewport.new(0,0,256,192) mais pour du Viewport.new(0,0,640,480) donc ça plante mais si on adapte les script ça devrais marcher !
Ce qu'il faut faire c'est attendre PSP DS 0.3 mais on peut se servir de tilemap 16x16 pour tester les map ou neo 7 plante ...
Voila

Edit :
Correction du bug animation de Warp'
Code:
module RPG
  class Sprite < ::Sprite
    @@_animations = []
    @@_reference_count = {}
    def initialize(viewport = nil)
      super(viewport)
      @_whiten_duration = 0
      @_appear_duration = 0
      @_escape_duration = 0
      @_collapse_duration = 0
      @_damage_duration = 0
      @_animation_duration = 0
      @_blink = false
      @_reverse = false
      @_option = 0
      @_registered_x = 0
      @_registered_y = 0
      @_registered_ox = 0
      @_registered_oy = 0
    end
   
    def register_position
      @_registered_x = self.x
      @_registered_ox = self.ox
      @_registered_y = self.y
      @_registered_oy = self.oy
    end
   
    def reset_position
      self.x = @_registered_x
      self.ox = @_registered_ox
      self.y = @_registered_y
      self.oy = @_registered_oy
    end
   
    def animation(animation, hit, reverse = false)
      dispose_animation
      @_animation = animation
      return if @_animation == nil
      @_animation_hit = hit
      @_animation_duration = @_animation.frame_max
      animation_name = @_animation.animation_name
      animation_hue = @_animation.animation_hue
      bitmap = RPG::Cache.animation(animation_name, animation_hue)
      if @@_reference_count.include?(bitmap)
        @@_reference_count[bitmap] += 1
      else
        @@_reference_count[bitmap] = 1
      end
      @_animation_sprites = []
      if @_animation.position != 3 or not @@_animations.include?(animation)
        for i in 0..15
          sprite = ::Sprite.new(self.viewport)
          sprite.bitmap = bitmap
          sprite.visible = false
          @_animation_sprites.push(sprite)
        end
        unless @@_animations.include?(animation)
          @@_animations.push(animation)
        end
      end
      @_reverse = reverse
      if animation.name.include?('/')
        split_list = animation.name.split('/')
        if split_list.length == 2
          if split_list[0].include?("R")
            @_option = 1
          end
          if split_list[0].include?("N")
            @_reverse = false
          end
          if split_list[0].include?("M")
            @_option = 2
          end
        end
      end
      update_animation
    end
   
    def update
      super
      if @_whiten_duration > 0
        @_whiten_duration -= 1
        self.color.alpha = 128 - (16 - @_whiten_duration) * 10
      end
      if @_appear_duration > 0
        @_appear_duration -= 1
        self.opacity = (16 - @_appear_duration) * 16
      end
      if @_escape_duration > 0
        @_escape_duration -= 1
        self.opacity = 256 - (32 - @_escape_duration) * 10
      end
      if @_collapse_duration > 0
        @_collapse_duration -= 1
        self.opacity = 256 - (48 - @_collapse_duration) * 6
      end
      if @_damage_duration > 0
        @_damage_duration -= 1
        case @_damage_duration
        when 38..39
          @_damage_sprite.y -= 4
        when 36..37
          @_damage_sprite.y -= 2
        when 34..35
          @_damage_sprite.y += 2
        when 28..33
          @_damage_sprite.y += 4
        end
        @_damage_sprite.opacity = 256 - (12 - @_damage_duration) * 32
        if @_damage_duration == 0
          dispose_damage
        end
      end
      if @_animation != nil and (Graphics.frame_count % 2 == 0)
        @_animation_duration -= 1
        update_animation
      end
      if @_loop_animation != nil and (Graphics.frame_count % 2 == 0)
        update_loop_animation
        @_loop_animation_index += 1
        @_loop_animation_index %= @_loop_animation.frame_max
      end
      if @_blink
        @_blink_count = (@_blink_count + 1) % 32
        if @_blink_count < 16
          alpha = (16 - @_blink_count) * 6
        else
          alpha = (@_blink_count - 16) * 6
        end
        self.color.set(255, 255, 255, alpha)
      end
      @@_animations.clear
      self.viewport.update if self.viewport != nil
    end
       
    def animation_set_sprites(sprites, cell_data, position)
      # Cas Spécial : le sprite de mouvement du Pokémon
      sprite = sprites[15]
      pattern = cell_data[15, 0]
      jump = false
      if sprite == nil or pattern == nil or pattern == -1
        sprite.visible = false if sprite != nil
        jump = true
      end
     
      x_compensate = 0
      y_compensate = 0
     
      if not jump
        if position == 3
          if self.viewport != nil
            self.x = self.viewport.rect.width / 2
            self.y = self.viewport.rect.height - 160
            #print 1
          else
            self.x = 256/2 - 16#320
            self.y = 192/2 - 16#240
            #print 2
          end
        else
          self.x = @_registered_x
          self.y = @_registered_y
          #print 3
        end
       
        if @_reverse and position == 3
          self.x = 620 - self.x
          self.y = 440 - self.y #328 - self.y
          #self.ox = self.src_rect.width / 2
          #self.oy = self.src_rect.height / 2
          #print 4
        end
   
        if not @_reverse
          self.x += cell_data[15, 1]
          self.y += cell_data[15, 2]
          x_compensate -= cell_data[15, 1] if position != 3
          y_compensate -= cell_data[15, 2] if position != 3
          #print("test3")
        else
          self.x -= cell_data[15, 1]
          self.y -= cell_data[15, 2]
          x_compensate += cell_data[15, 1] if position != 3
          y_compensate += cell_data[15, 2] if position != 3
          #print 5
        end
       
      end
       
      for i in 0..14
        sprite = sprites[i]
        pattern = cell_data[i, 0]
        if sprite == nil or pattern == nil or pattern == -1
          sprite.visible = false if sprite != nil
          next
        end
       
        sprite.visible = true
        sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192)
         
        if position == 3
          if self.viewport != nil
            sprite.x = self.viewport.rect.width / 2
            sprite.y = self.viewport.rect.height - 160
            #print 6
          else
            sprite.x = 256/2 - 16#320
            sprite.y = 192/2 - 16#240
            #print 7
          end
        else
          sprite.x = self.x - self.ox + self.src_rect.width / 2
          sprite.y = self.y - self.oy + self.src_rect.height / 2
          sprite.y -= self.src_rect.height / 4 - 50 if position == 0#4
          sprite.y += self.src_rect.height / 4 + 50 if position == 2#4
        end
       
        if @_reverse and position == 3
          sprite.x = 620 - sprite.x
          sprite.y = 328 - sprite.y
          #print 9
        end
       
        if not @_reverse
          sprite.x += cell_data[i, 1] + x_compensate - 8
          sprite.y += cell_data[i, 2] + y_compensate - 16
          #print 10
        else
          sprite.x -= cell_data[i, 1] - x_compensate
          sprite.y -= cell_data[i, 2] - y_compensate
          #print 11
        end
       
        sprite.z = 2000
        sprite.ox = 96
        sprite.oy = 96
        sprite.zoom_x = cell_data[i, 3] / 100.0 / 2.0 #bug
        sprite.zoom_y = cell_data[i, 3] / 100.0 / 2.0 #bug
        sprite.angle = cell_data[i, 4]
        if @_option == 1 and @_reverse
          sprite.angle += 180
        end
        sprite.mirror = (cell_data[i, 5] == 1)
        if @_option == 2 and @_reverse
          sprite.mirror = (sprite.mirror == false)
        end
        sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
        sprite.blend_type = cell_data[i, 7]
      end
    end
  end
 
end

Fait gaffe car ton animation "Emotion !" est légèrement décalé il faut que tu la recale dans la BDD.
Back to top
Facebook Twitter
Warp'
Membre


Joined: 21 Aug 2008
Posts: 1,353
Localisation: Québec

PostPosted: Wed 14 Jul - 18:13 (2010)    Post subject: Tilemap 16x16

Youri wrote:

Palb' si il peux surfer c'est peut être parce que l'évent commun surf existe toujours dans PSP DS ...
{{{Image Preuve}}}
Puis mon Script (que vous prenez pour un tuto :? ) lui est la classe Tilemap qui elle sert a assembler les tiles de la map (bon il est pas parfait) donc si il y a des probleme du coté animations et co.
c'est tout simplement parce que les script RMXP sont pas fait pour du Viewport.new(0,0,256,192) mais pour du Viewport.new(0,0,640,480) donc ça plante mais si on adapte les script ça devrais marcher !
Ce qu'il faut faire c'est attendre PSP DS 0.3 mais on peut se servir de tilemap 16x16 pour tester les map ou neo 7 plante ...
Voila

Edit :
Correction du bug animation de Warp'
{{{Module RPG}}}
Fait gaffe car ton animation "Emotion !" est légèrement décalé il faut que tu la recale dans la BDD.

C'est bien ce que tu as fait. En regardant tes modifs, j'ai eu une idée. J'ai pris un bout de code dans NM7 Part3 et je l'ai mis dans Module RPG. Une partie semblable était déjà là donc je l'ai remplacé... Bref, les animations sont à la même même même place que dans PSP DS (avec NM7)
Voici le script Module RPG*
 
Code:

 module RPG
  class Sprite < ::Sprite
    @@_animations = []
    @@_reference_count = {}
    def initialize(viewport = nil)
      super(viewport)
      @_whiten_duration = 0
      @_appear_duration = 0
      @_escape_duration = 0
      @_collapse_duration = 0
      @_damage_duration = 0
      @_animation_duration = 0
      @_blink = false
      @_reverse = false
      @_option = 0
      @_registered_x = 0
      @_registered_y = 0
      @_registered_ox = 0
      @_registered_oy = 0
    end
    
    def register_position
      @_registered_x = self.x
      @_registered_ox = self.ox
      @_registered_y = self.y
      @_registered_oy = self.oy
    end
    
    def reset_position
      self.x = @_registered_x
      self.ox = @_registered_ox
      self.y = @_registered_y
      self.oy = @_registered_oy
    end
    
    def animation(animation, hit, reverse = false)
      dispose_animation
      @_animation = animation
      return if @_animation == nil
      @_animation_hit = hit
      @_animation_duration = @_animation.frame_max
      animation_name = @_animation.animation_name
      animation_hue = @_animation.animation_hue
      bitmap = RPG::Cache.animation(animation_name, animation_hue)
      if @@_reference_count.include?(bitmap)
        @@_reference_count[bitmap] += 1
      else
        @@_reference_count[bitmap] = 1
      end
      @_animation_sprites = []
      if @_animation.position != 3 or not @@_animations.include?(animation)
        for i in 0..15
          sprite = ::Sprite.new(self.viewport)
          sprite.bitmap = bitmap
          sprite.visible = false
          @_animation_sprites.push(sprite)
        end
        unless @@_animations.include?(animation)
          @@_animations.push(animation)
        end
      end
      @_reverse = reverse
      if animation.name.include?('/')
        split_list = animation.name.split('/')
        if split_list.length == 2
          if split_list[0].include?("R")
            @_option = 1
          end
          if split_list[0].include?("N")
            @_reverse = false
          end
          if split_list[0].include?("M")
            @_option = 2
          end
        end
      end
      update_animation
    end
    
    def update
      super
      if @_whiten_duration > 0
        @_whiten_duration -= 1
        self.color.alpha = 128 - (16 - @_whiten_duration) * 10
      end
      if @_appear_duration > 0
        @_appear_duration -= 1
        self.opacity = (16 - @_appear_duration) * 16
      end
      if @_escape_duration > 0
        @_escape_duration -= 1
        self.opacity = 256 - (32 - @_escape_duration) * 10
      end
      if @_collapse_duration > 0
        @_collapse_duration -= 1
        self.opacity = 256 - (48 - @_collapse_duration) * 6
      end
      if @_damage_duration > 0
        @_damage_duration -= 1
        case @_damage_duration
        when 38..39
          @_damage_sprite.y -= 4
        when 36..37
          @_damage_sprite.y -= 2
        when 34..35
          @_damage_sprite.y += 2
        when 28..33
          @_damage_sprite.y += 4
        end
        @_damage_sprite.opacity = 256 - (12 - @_damage_duration) * 32
        if @_damage_duration == 0
          dispose_damage
        end
      end
      if @_animation != nil and (Graphics.frame_count % 2 == 0)
        @_animation_duration -= 1
        update_animation
      end
      if @_loop_animation != nil and (Graphics.frame_count % 2 == 0)
        update_loop_animation
        @_loop_animation_index += 1
        @_loop_animation_index %= @_loop_animation.frame_max
      end
      if @_blink
        @_blink_count = (@_blink_count + 1) % 32
        if @_blink_count < 16
          alpha = (16 - @_blink_count) * 6
        else
          alpha = (@_blink_count - 16) * 6
        end
        self.color.set(255, 255, 255, alpha)
      end
      @@_animations.clear
      self.viewport.update if self.viewport != nil
    end
        

    def animation_set_sprites(sprites, cell_data, position)
      for i in 0..15
        sprite = sprites[i]
        pattern = cell_data[i, 0]
        if sprite == nil or pattern == nil or pattern == -1
          sprite.visible = false if sprite != nil
          next
        end
        sprite.visible = true
        sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192)
        if position == 3
          if self.viewport != nil
            sprite.x = self.viewport.rect.width / 2
            sprite.y = self.viewport.rect.height - 160
          else
            sprite.x = 320
            sprite.y = 240
          end
        else
          sprite.x = self.x - self.ox + self.src_rect.width / 2
          sprite.y = self.y - self.oy + self.src_rect.height / 2
          sprite.y -= self.src_rect.height / 4 if position == 0
          sprite.y += self.src_rect.height / 4 if position == 2
        end
        sprite.x += zoom_x * cell_data[i, 1]
        sprite.y += zoom_y * cell_data[i, 2]
        sprite.z = z
        sprite.ox = 96
        sprite.oy = 96
        sprite.zoom_x = zoom_x * cell_data[i, 3] / 100.0
        sprite.zoom_y = zoom_y * cell_data[i, 3] / 100.0
        sprite.angle = cell_data[i, 4]
        sprite.mirror = (cell_data[i, 5] == 1)
        sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
        sprite.blend_type = cell_data[i, 7]
      end
    end
  end
end




Ce qui était dans NM7 Part3, c'est à partir de la ligne 138 jusqu'à la fin Imbécile heureux
Back to top
Contenu Sponsorisé






PostPosted: Today at 02:44 (2019)    Post subject: Tilemap 16x16

Back to top
Display posts from previous:   
Post new topic   Reply to topic    Pokémon Script Project Forum Index -> Game Making -> Ressources techniques -> Scripts All times are GMT + 1 Hour
Goto page: <  1, 2
Page 2 of 2

 
Jump to:  

Index | Free forum | Free support forum | Free forums directory | Report a violation | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group
Thème par Thomas et l'équipe de la refonte PSP 2012 (version 1.0)