Suporte no desenvolvimento de jogos


    Sistema de Plataforma + Extra-frames RMXP

    Yurimana
    Yurimana
    Novato
    Novato

    Mensagens : 1
    Créditos : 0
    Cash : 0

    Sistema de Plataforma + Extra-frames RMXP Empty Sistema de Plataforma + Extra-frames RMXP

    Mensagem por Yurimana em Ter Abr 12, 2016 3:21 pm

    Boa tarde,
    bem atualmente estou com uma séria duvida para desenvolver meu projeto, estou usando o Sistema de Extra-frames em meu projeto e um de plataforma da Mayleone, e em meu projeto o character tem de se mover em 6 tipos de frames diferentes, porém quando coloca o sistema de extra-frames juntamente com o da plataforma o char só move 4 frames diferentes, queria saber como mudar isso, ou se alguem poderia mudar... enfim segue abaixo o sistema de extra-frames e o site pra baixar um exemplo do que está acontecendo.
    Lembrando que a quantidade de frames que o character vai andar está no nome do arquivo do gráfico do char.
    Obs: O sistema de plataforma está dentro do projeto exemplo.

    Código:
    ==============================================================================
    # Extra Frames
    # por COGHWELL
    # Edit by KK20
    # http://members.jcom.home.ne.jp/cogwheel/
    #==============================================================================
    # KK20's Note: The following instructions are no longer relevant to this script.
    # The number of frames a character sprite uses is determined by the amount
    # configured in the configuration below.
    #==============================================================================
    # O script permite que a imagem do character tenha mais que 4 frames.
    #
    # Para definir a quantidade de frames basta definir o nome adicione [X]
    # ao seu nome, onde X é o numero de frames.
    #
    # Ex.:
    # 001-Fighter01[7].png
    #
    # Isto significa que o 001-Fighter01 terá 7 frames
    #==============================================================================
    module ExtraFramesConfig
      def self.char_frames(name)
        case name
        #--------------------------------------------------------------------------
        # Begin Configuration
        # Format:
        #             when 'filename' then return FRAMES
        #
        # Any names not configured will be assumed to have 4 frames (RMXP default)
        #--------------------------------------------------------------------------
        when 'hero' then return 8
       
        #--------------------------------------------------------------------------
        # End of Configuration
        #--------------------------------------------------------------------------
        else
          return 4
        end
      end
    end

    #==============================================================================
    # ■ Game_Character
    #==============================================================================
    class Game_Character
      #--------------------------------------------------------------------------
      def update
        if jumping?
          update_jump
        elsif moving?
          update_move
        else
          update_stop
        end
        frames = ExtraFramesConfig.char_frames(@character_name)
        if frames != 4
          @anime_count = 20 if @anime_count > 0 and @pattern == @original_pattern
          if @anime_count * (frames - 1) / 4 > 18 - @move_speed * 3
            if not @step_anime and @stop_count > 0
              @pattern = @original_pattern
            else
              @pattern = @pattern % (frames - 1) + 1
            end
            @anime_count = 0
          end
        else
          if @anime_count > 18 - @move_speed * 2
            if not @step_anime and @stop_count > 0
              @pattern = @original_pattern
            else
              @pattern = (@pattern + 1) % 4
            end
            @anime_count = 0
          end
        end
        if @wait_count > 0
          @wait_count -= 1
          return
        end
        if @move_route_forcing
          move_type_custom
          return
        end
        if @starting or lock?
          return
        end
        if @stop_count > (40 - @move_frequency * 2) * (6 - @move_frequency)
          case @move_type
          when 1
            move_type_random
          when 2
            move_type_toward_player
          when 3
            move_type_custom
          end
        end
      end
    end


    #================================================= =============================
    # ■ Sprite_Character
    #================================================= =============================
    class Sprite_Character < RPG::Sprite
      #--------------------------------------------------------------------------
      def update
        super
        if @tile_id != @character.tile_id or
           @character_name != @character.character_name or
           @character_hue != @character.character_hue
          @tile_id = @character.tile_id
          @character_name = @character.character_name
          @character_hue = @character.character_hue
          if @tile_id >= 384
            self.bitmap = RPG::Cache.tile($game_map.tileset_name,
            @tile_id, @character.character_hue)
            self.src_rect.set(0, 0, 32, 32)
            self.ox = 16
            self.oy = 32
          else
            self.bitmap = RPG::Cache.character(@character.character_name,
            @character.character_hue)
            frames = ExtraFramesConfig.char_frames(@character.character_name)
            if frames != 4
              @cw = bitmap.width / frames
              @ch = bitmap.height / 4
            else
              @cw = bitmap.width / 4
              @ch = bitmap.height / 4
            end
            self.ox = @cw / 2
            self.oy = @ch
          end
        end
        self.visible = (not @character.transparent)
        if @tile_id == 0
          sx = @character.pattern * @cw
          sy = (@character.direction - 2) / 2 * @ch
          self.src_rect.set(sx, sy, @cw, @ch)
        end
        self.x = @character.screen_x
        self.y = @character.screen_y
        self.z = @character.screen_z(@ch)
        self.opacity = @character.opacity
        self.blend_type = @character.blend_type
        self.bush_depth = @character.bush_depth
        if @character.animation_id != 0
          animation = $data_animations[@character.animation_id]
          animation(animation, true)
          @character.animation_id = 0
        end
      end
    end

    #================================================= =============================
    # ■ Window_Base
    #================================================= =============================
    class Window_Base < Window
      #--------------------------------------------------------------------------
      def draw_actor_graphic(actor, x, y)
        bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
        frames = ExtraFramesConfig.char_frames(actor.character_name)
        if frames != 4
          cw = bitmap.width / frames
          ch = bitmap.height / 4
        else
          cw = bitmap.width / 4
          ch = bitmap.height / 4
        end
        src_rect = Rect.new(0, 0, cw, ch)
        self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
      end
    end

    #================================================= =============================
    # ■ Window_SaveFile
    #================================================= =============================
    class Window_SaveFile < Window_Base
      #--------------------------------------------------------------------------
      def refresh
        self.contents.clear
        self.contents.font.color = normal_color
        name = "File #{@file_index + 1}"
        self.contents.draw_text(4, 0, 600, 32, name)
        @name_width = contents.text_size(name).width
        if @file_exist
          for i in 0...@characters.size
            bitmap = RPG::Cache.character(@characters[i][0], @characters[i][1])
            frames = ExtraFramesConfig.char_frames(@characters[i][0])
            if @characters[i][0][/\[(\d+)\]/]
              cw = bitmap.width / frames
              ch = bitmap.height / 4
            else
            cw = bitmap.width / 4
            ch = bitmap.height / 4
          end
          src_rect = Rect.new(0, 0, cw, ch)
          x = 300 - @characters.size * 32 + i * 64 - cw / 2
          self.contents.blt(x, 68 - ch, bitmap, src_rect)
        end
        hour = @total_sec / 60 / 60
        min = @total_sec / 60 % 60
        sec = @total_sec % 60
        time_string = sprintf("%02d:%02d:%02d", hour, min, sec)
        self.contents.font.color = normal_color
        self.contents.draw_text(4, 8, 600, 32, time_string, 2)
        self.contents.font.color = normal_color
        time_string = @time_stamp.strftime("%Y/%m/%d %H:%M")
        self.contents.draw_text(4, 40, 600, 32, time_string, 2)
        end
      end
    end

    #================================================= =============================
    # ■ Game_Player
    #================================================= =============================
    class Game_Player < Game_Character
      #--------------------------------------------------------------------------
      def anime_update
        frames = ExtraFramesConfig.char_frames(@character_name)
        if frames != 4
          @anime_count = 20 if @anime_count > 0 and @pattern == @original_pattern
          if @anime_count * (frames - 1) / 4 > 18 - @move_speed * 2
            if not @step_anime and @stop_count > 0
              @pattern = @original_pattern
            else
              @pattern = @pattern % ($1.to_i - 1) + 1
            end
            @anime_count = 0
          end
        else
          if @anime_count > 18 - @move_speed * 2
            if not @step_anime and @stop_count > 0
              @pattern = @original_pattern
            else
              @pattern = (@pattern + 1) % 4
            end
            @anime_count = 0
          end
        end
      end
    end

    Site do exemplo: http://www.mediafire.com/download/qsu406nc5y5y521/Project1.rar

      Data/hora atual: Qui Dez 05, 2019 12:59 pm