Brasil G4mes
Registre-se para ter acesso total à todas as seções do fórum!
Jogue, brinque e o mais importante, divirta-se!

Participe do fórum, é rápido e fácil

Brasil G4mes
Registre-se para ter acesso total à todas as seções do fórum!
Jogue, brinque e o mais importante, divirta-se!
Brasil G4mes
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Mode 7, versão VX e versão XP

4 participantes

Ir para baixo

Mode 7, versão VX e versão XP Empty Mode 7, versão VX e versão XP

Mensagem por PedR0 Sáb Jul 11, 2009 6:38 pm

Autor:Desconhecido, eu peguei em um site&forum japones da EB



é tipo o mode7 melhorado- naum é tradução é oq eu consegui observa do script dew oq eu naum vi, fdw /o/

Um script para deixar o mapa do seu jogo 3D, com ele você pode fazer mapas semelhante ao de baixo:

Mode 7, versão VX e versão XP Grasslandvp3
Instruções:
-Faça um mapa com qualquer nome e coloque o comando após o nome do mapa: #[XX] sendo XX a porcentagem de inclinação do mapa, aconselho algo em torno de 20 e 40.
-Para deixar o char pequeno que nem num mapa mundi coloque o comando após o #[XX] ou após o nome do mapa: [OV]
-O seu mapa poderá aparecer uma área em preto, para tirar isso coloque um panorama no mapa.

<Script>

Código:
=begin

Mode07 on the Map!
Includes:
    Mode07 v0.6
    Overworld Sprite Resize
  Written by mewsterus

Special Thanks:
  Fanha Giang (for a reverse engineered Tilemap class)
--------------------------------------------------------------------------------
Instructions:
--------------------------------------------------------------------------------
To install, just insert this in a descriptive code slot right above Main.
This is different than previous instructions; please read the next paragraph.

If you had a previous install of this script and need an original version of
Spriteset_Map, one can be found at:
http://www.rpg-palace.com/scripts/spriteset_map.txt

To activate Mode07, add [#XX] to the map's name, replacing XX with the
percentage of Mode07 to apply.  Greater numbers will result in a more slanted
world.

To activate overworld sprite resize, add [OV] to the map's name.  This will make
sprites smaller on that map.

For the purposes of location scripts, these identifiers will not appear.


Examples:

"Overworld[#40]" will result in a slant identical to the second screenshot.
"Underworld[OV]" will resize only the player character to a small size, as if
                seen from high above.
"Atthelevelworld[OV][#12]" will result in the player being resized, and a modest
                          slant of 12%
"JustPlainWorld" will result in the same old map you've always seen.

To add a sky, simply use the panorama with the tileset.  Also, events will not
be drawn flat with the map.  Any vertical objects such as trees should be put
in events and displayed that way.

You can also add a sky by adding a fog.  If you add this, you can make it look
like the first screenshot.

A note on the $strip_size variable; the default value is 8, however there is
extremely minimal, almost nonexistant lag with 16. The screen is extremely
smooth with 4, or even 2. If you're having major problems with lag, you may
need to use 32, but it won't look too pretty.
--------------------------------------------------------------------------------
* Draw_Tilemap v1.72-0.6
Fanha Giang, 02/12/2006 (mm/dd/yyyy)
Edited for Mode07 by mewsterus 08/08/2006 (mm/dd/yyyy)
=end
#===============================================================================

$width = 640    # Screen width        (will not change resolution,
$height = 480  # Screen height        here for compatibility)
$ov_zoom = 0.6  # Overworld zoom multiplier
$strip_size = 8 # Size of each strip of the map.  Higher numbers will lag less.
                #  Recommended that this number be a power of 2.
                #  Do not make higher than 64.
$curve = true  # Whether the map is curled, for overworlds (old method)
$data_map = load_data("Data/MapInfos.rxdata")
#===============================================================================

class RPG::MapInfo
  def name # Definition prevents location scripts from reading anything within
    return @name.gsub(/\[.*\]/) {""} # brackets, including the brackets
  end
  #-----------------------------------------------------------------------------
  def original_name
    return @name
  end
  #-----------------------------------------------------------------------------
  def overworld?
    return @name.scan(/[OV]/).size > 0
  end
  #-----------------------------------------------------------------------------
  def pitch
    @name =~ /\[#[ ]*([00-99]+)\]/i
    return $1
  end
end
#===============================================================================

class Draw_Tilemap # This class controls a set of sprites, with different Z
                  #  values, arranged into horizontal bars
  attr_accessor :tileset
  attr_accessor :map_data
  attr_accessor :priorities
  attr_accessor :autotiles
  attr_accessor :bitmaps
  attr_accessor :pitch
  attr_accessor :ox
  attr_accessor :oy
  attr_accessor :plus_y
  INDEX = # Autotile definitions
  [
  26, 27, 32, 33, 4,  27, 32, 33, 26, 5,  32, 33, 4,  5,  32, 33,
  26, 27, 32, 11, 4,  27, 32, 11, 26, 5,  32, 11, 4,  5,  32, 11,
  26, 27, 10, 33, 4,  27, 10, 33, 26, 5,  10, 33, 4,  5,  10, 33,
  26, 27, 10, 11, 4,  27, 10, 11, 26, 5,  10, 11, 4,  5,  10, 11,
  24, 25, 30, 31, 24, 5,  30, 31, 24, 25, 30, 11, 24, 5,  30, 11,
  14, 15, 20, 21, 14, 15, 20, 11, 14, 15, 10, 21, 14, 15, 10, 11,
  28, 29, 34, 35, 28, 29, 10, 35, 4,  29, 34, 35, 4,  29, 10, 35,
  38, 39, 44, 45, 4,  39, 44, 45, 38, 5,  44, 45, 4,  5,  44, 45,
  24, 29, 30, 35, 14, 15, 44, 45, 12, 13, 18 ,19, 12, 13, 18, 11,
  16, 17, 22, 23, 16, 17, 10, 23, 40, 41, 46, 47, 4,  41, 46, 47,
  36, 37, 42, 43, 36, 5,  42, 43, 12, 17, 18, 23, 12, 13, 42, 43,
  36, 41, 42, 47, 16, 17, 46, 47, 12, 17, 42, 47, 0,  1,  6,  7
  ]
  X = [0, 1, 0, 1] # Used in 16x16 autotile drawing; left, right, left, right
  Y = [0, 0, 1, 1] # Used in 16x16 autotile drawing;  up,    up, down,  down
  #-----------------------------------------------------------------------------
  def initialize
  # Get initial data from Game_Map
    @tileset = RPG::Cache.tileset($game_map.tileset_name)
    @map_data = $game_map.data
    @priorities = $game_map.priorities
    @autotiles = []
    for i in 0..6
      @autotiles[i] = RPG::Cache.autotile($game_map.autotile_names[i])
    end
  # Provide blank data in proper object form
    @ox = 0
    @oy = 0
  # Bitmaps used for each priority's drawing.  Priorities 2-5 are combined.
    @bitmaps = [Bitmap.new($game_map.width*32, $game_map.height*32+$strip_size),
                Bitmap.new($game_map.width*32, $game_map.height*32+$strip_size),
                Bitmap.new($game_map.width*32, $game_map.height*32+$strip_size)]
  # Generate blank sprites
    @sprites = [[], [], []]
    for i in 0..2 # For each layer
      for j in 0..$game_map.height * (32 / $strip_size) - 1
      # For each horizontal strip of $strip_size height, make a blank sprite
        @sprites[i].push(Sprite.new)
        @sprites[i][j].bitmap = Bitmap.new($game_map.width*32, $strip_size*2)
        @sprites[i][j].x = $width / 2
        @sprites[i][j].y = -64
        @sprites[i][j].z = -5 + (i * 10)
      end
    end
    @disposed = false
    draw
  end
  #-----------------------------------------------------------------------------
  def update
  # Retrieve variable values for slant drawing; these values accesible by event
    @pitch = $game_map.pitch.to_f
    @plus_y = $game_map.plus_y
    for i in 0..2 # For each layer
      for j in [0, (($height / 2) - (($height * 60) /
                @pitch) + @oy) / $strip_size].max.to_i..[@sprites[i].size - 1,
                (@oy + $height) / $strip_size].min.to_i
      # For each strip within the visible screen, update OX/Y
        @sprites[i][j].x = $width / 2
        @sprites[i][j].y = j * $strip_size - @oy
        unless @pitch == 0 # Apply X Zoom
          @sprites[i][j].zoom_x = (@sprites[i][j].y - $height / 2) *
                                  (@pitch / ($height * 25)) + 1
          if $curve # Zoom Y values same as X, and compensate
            @sprites[i][j].zoom_y = @sprites[i][j].zoom_x
            @sprites[i][j].y += $strip_size * (1 - @sprites[i][j].zoom_y) *
                                ((1 - @sprites[i][j].zoom_y) /
                                (2 * ((@pitch / 100) /
                                      ($height / ($strip_size * 2)))) + 0.5)
          end
        end
        @sprites[i][j].ox = @ox + $width / 2
      # Add plus_y value; used in airship script
        @sprites[i][j].y += @plus_y
      end
    end
  end
  #-----------------------------------------------------------------------------
  def dispose
  # Dispose all sprites
    for i in 0..2
      for j in @sprites[i]
        j.bitmap.dispose
        j.dispose
      end
    end
    for i in @bitmaps
      i.dispose
    end
    @tileset.dispose
    for i in 0..6
      @autotiles[i].dispose
    end
    @disposed = true
  end
  #-----------------------------------------------------------------------------
  def disposed?
    return @disposed
  end
  #-----------------------------------------------------------------------------
  def draw
  # Draw each individual position by XY value
    for x in 0...@map_data.xsize
      for y in 0...@map_data.ysize
        draw_position(x, y)
      end
    end
    for i in 0..2 # For each priority
      for j in 0..@sprites[i].size - 1
      # For each horizontal strip, transfer the bitmap appropriately
        @sprites[i][j].bitmap.blt(0, 0, @bitmaps[i],
            Rect.new(0, j * $strip_size, $game_map.width * 32, $strip_size * 2))
      end
    end
  end
  #-----------------------------------------------------------------------------
  def draw_position(x, y)
    for layer in 0..2
      pos = @map_data[x, y, layer]
      @priorities[pos] = 2 if @priorities[pos] > 2 # Round priorities down to 2
      if pos >= 384 # If it is a tile
      # src_rect = 32x32 Rect on the tileset for source bitmap
        src_rect = Rect.new(((pos-384)%8)*32, ((pos-384)/8)*32, 32, 32)
      # Transfer source bitmap on the tileset to the current map tile
        @bitmaps[@priorities[pos]].blt(x * 32, y * 32, @tileset, src_rect)
      elsif pos >= 48 and pos < 384 # If it is an autotile
        id = pos / 48 - 1 # Which autotile is used (0-6)
      # plus_x is in development for animated autotiles
        plus_x = 0 #((@anim / 4) % (@autotiles[id].width / 96)) * 96
        for corner in 0..3
          h = 4 * (pos % 48) + corner # Used to access INDEX
        # src_rect = 16x16 Rect on the autotile for source bitmap
          src_rect = Rect.new((INDEX[h]%6)*16+plus_x, (INDEX[h]/6)*16, 16, 16)
        # Transfer source bitmap on the autotile to the current 16x16 tile
          @bitmaps[@priorities[pos]].blt(x*32+X[corner]*16, y*32+Y[corner]*16,
                                          @autotiles[id], src_rect)
        end
      end
    end
  end
end
#===============================================================================

class Game_Map
  attr_accessor :pitch
  attr_accessor :plus_y
  #-----------------------------------------------------------------------------
  alias setup_or :setup
  def setup(map_id)
    setup_or(map_id)
    @pitch = $data_map[$game_map.map_id].pitch
    @plus_y = 0
  end
  #-----------------------------------------------------------------------------
  def name
    return $data_map[@map_id].name
  end
end
#===============================================================================

class Sprite_Character < RPG::Sprite
  attr_accessor :character
  #-----------------------------------------------------------------------------
  def initialize(character = nil)
    super()
    @character = character
    update
  end
  #-----------------------------------------------------------------------------
  alias update_or :update
  def update
    update_or
  # Update pitch value, and update zoom values to match
    @pitch = $data_map[$game_map.map_id].pitch.to_f
    self.zoom_x =
    self.zoom_y = ((@character.screen_y - 16) - ($height / 2)) *
                  (@pitch / ($height * 25)) + 1
  # Set sprite coordinates.  X value is multiplied by zoom value from the center
    self.x = ($width / 2) + ((@character.screen_x - ($width / 2)) * self.zoom_x)
    self.y = @character.screen_y
  # Add Y value for zoom compensation while in curve mode
    if $curve and @pitch != 0
      self.y += (8 * (1 - self.zoom_y) * ((1 - self.zoom_y) /
                (2 * ((@pitch / 100) / ($height / 16.0))) + 0.5))
    end
  # Add plus_y value; used in airship script
    self.y += $game_map.plus_y unless @character.is_a?(Game_Player)
    self.z = @character.screen_z(@ch) - (self.zoom_y < 0.5 ? 1000 : 0)
    if $data_map[$game_map.map_id].overworld? and
      @character.is_a?(Game_Player) # Multiply zoom by Overworld factor if
      self.zoom_x *= $ov_zoom        #  the map is marked with [OV] and event
      self.zoom_y *= $ov_zoom        #  is a Game_Player
    end
  end
end
#===============================================================================

class Spriteset_Map
  def initialize
  # Make viewports
    @viewport1 = Viewport.new(0, 0, 640, 480)
    @viewport2 = Viewport.new(0, 0, 640, 480)
    @viewport3 = Viewport.new(0, 0, 640, 480)
    @viewport2.z = 2000
    @viewport3.z = 5000
  # Make tilemap
    @tilemap = Draw_Tilemap.new
  # Make panorama plane
    @panorama = Plane.new
    @panorama.z = -2000
  # Make fog plane
    @fog = Plane.new
    @fog.z = 3000
  # Make character sprites
    @character_sprites = []
    for i in $game_map.events.keys.sort
      sprite = Sprite_Character.new($game_map.events[i])
      @character_sprites.push(sprite)
    end
    @character_sprites.push(Sprite_Character.new($game_player))
  # Make weather
    @weather = RPG::Weather.new(@viewport1)
  # Make picture sprites
    @picture_sprites = []
    for i in 1..50
      @picture_sprites.push(Sprite_Picture.new(@viewport2,
                                              $game_screen.pictures[i]))
    end
  # Make timer sprite
    @timer_sprite = Sprite_Timer.new
  # Frame update
    update
  end
  #-----------------------------------------------------------------------------
  def dispose
  # Dispose of tilemap
    @tilemap.dispose
  # Dispose of panorama plane
    @panorama.dispose
  # Dispose of fog plane
    @fog.dispose
  # Dispose of character sprites
    for sprite in @character_sprites
      sprite.dispose
    end
  # Dispose of weather
    @weather.dispose
  # Dispose of picture sprites
    for sprite in @picture_sprites
      sprite.dispose
    end
  # Dispose of timer sprite
    @timer_sprite.dispose
  # Dispose of viewports
    @viewport1.dispose
    @viewport2.dispose
    @viewport3.dispose
  end
end
Ikarus - Approve


versão VX ta no 3º post :p, naum coube


Última edição por PedR0 em Sex Jul 24, 2009 11:02 am, editado 2 vez(es)
PedR0
PedR0
Membro
Membro

Mensagens Mensagens : 426
Fama Fama : 34

http://orkutwakn.blogspot.com

Ir para o topo Ir para baixo

Mode 7, versão VX e versão XP Empty Re: Mode 7, versão VX e versão XP

Mensagem por Tyriel Sáb Jul 11, 2009 7:39 pm

É uma versão pra XP do Mode 07, não? Muito bom, daqui a pouco tu vai ser nomeado algo bem importante aqui na cidade... Tá de parabéns!
Tyriel
Tyriel
Membro
Membro

Mensagens Mensagens : 566
Fama Fama : 19

Ir para o topo Ir para baixo

Mode 7, versão VX e versão XP Empty Re: Mode 7, versão VX e versão XP

Mensagem por PedR0 Sex Jul 17, 2009 2:01 pm

eu agora já sou colaborador /o/
mais pra não fazer um post inutil, vou postar a versão VX tbm, já aviso nesse ^^
PedR0
PedR0
Membro
Membro

Mensagens Mensagens : 426
Fama Fama : 34

http://orkutwakn.blogspot.com

Ir para o topo Ir para baixo

Mode 7, versão VX e versão XP Empty Re: Mode 7, versão VX e versão XP

Mensagem por Master of Death Sex Jul 17, 2009 8:50 pm

muy legal mais coloke uma screem dela em vx
Master of Death
Master of Death
Membro
Membro

Mensagens Mensagens : 361
Fama Fama : 25

http://dungeonmakers.com.br/forum

Ir para o topo Ir para baixo

Mode 7, versão VX e versão XP Empty Re: Mode 7, versão VX e versão XP

Mensagem por Convidad Sex Jul 17, 2009 9:00 pm

nem curto Mode 7 sab pq,eh mto desalinhado,vc anda prum lado e tem alguem parado ali,derrepente eli se movimenta sabe,eh ruim pra cacete

Convidad
Convidado


Ir para o topo Ir para baixo

Mode 7, versão VX e versão XP Empty Re: Mode 7, versão VX e versão XP

Mensagem por Alisson bad Sex Jul 17, 2009 10:45 pm

será q é tudo isso pinish não é pra tanto é??? bom cada um tem seu ponto de vista, e tbm eu nunca esse negocio aí daí eu acho q não é ruim!!!
Alisson bad
Alisson bad
Membro
Membro

Mensagens Mensagens : 373
Fama Fama : 12

Ir para o topo Ir para baixo

Mode 7, versão VX e versão XP Empty Re: Mode 7, versão VX e versão XP

Mensagem por PedR0 Sex Jul 24, 2009 11:08 am

o pra vx eu naum gosto mesmo, mais o xp é bom e naum faz isso q o pinish disse
PedR0
PedR0
Membro
Membro

Mensagens Mensagens : 426
Fama Fama : 34

http://orkutwakn.blogspot.com

Ir para o topo Ir para baixo

Mode 7, versão VX e versão XP Empty Re: Mode 7, versão VX e versão XP

Mensagem por Alisson bad Sex Jul 24, 2009 2:49 pm

ainda bem pedro pq é muito bom esse scrpt e é meio complicado tbm né!!! eu acho isso pq não sou scripter né!!
Alisson bad
Alisson bad
Membro
Membro

Mensagens Mensagens : 373
Fama Fama : 12

Ir para o topo Ir para baixo

Mode 7, versão VX e versão XP Empty Re: Mode 7, versão VX e versão XP

Mensagem por PedR0 Sáb Jul 25, 2009 10:15 pm

naum naum, só le as coisas que tão #assim são as instruções
dae fica facil
PedR0
PedR0
Membro
Membro

Mensagens Mensagens : 426
Fama Fama : 34

http://orkutwakn.blogspot.com

Ir para o topo Ir para baixo

Mode 7, versão VX e versão XP Empty Re: Mode 7, versão VX e versão XP

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos