30/12/2010 RPG Maker
É permitido, livre de quaisquer ônus, usar, copiar, modificar e/ou distribuir cópias deste script, desde que seja mantido este aviso. NÃO HÁ QUALQUER GARANTIA, USE POR SUA PRÓPRIA CONTA E RISCO.

Introdução

No RPG Maker XP você não pode usar mais do que 50 pictures, esse script te possibilita adicionar quantas pictures quiser. Ótimo para menus por eventos, sistemas e outras coisas.

Este script cria um "deslocamento" no array de pictures para que você use mais que 50 pictures no RPG Maker XP. Você usa o comando de evento Mostrar Imagem normalmente, porém junto com uma variável que indica o deslocamento.

Esta é uma versão XP do Script para VX Mostrar mais de 20 pictures, quem pediu a conversão foi o kress/aniplex.

Screenshots

Screenshot script mais de 50 pictures para RPG Maker XP

Como usar

Cole acima de Main. Configure o número máximo de pictures e a ID da variável de deslocamento. Crie o evento desta forma:

Exemplo de evento com mais de 50 pictures para RPG Maker XP

Demo

Picturesxp.rar

Script

=begin
  Mais de 50 pictures
  por br_lemes e colaboração pedro(HCDO)

  É permitido, livre de quaisquer ônus, usar, copiar, modificar e/ou
  distribuir cópias deste script, desde que seja mantido este aviso.
  NÃO HÁ QUALQUER GARANTIA, USE POR SUA PRÓPRIA CONTA E RISCO.
=end

# Este script cria um "deslocamento" no array de pictures para que você use
# mais que 50 pictures no RPG Maker XP. Você usa o comando de evento Mostrar
# Imagem normalmente, porém junto com uma variável que indica o deslocamento.

$PICTURE_MAXNUM = 50 * 2 # Número máximo de pictures
$PICTURE_OFFSET =      1 # ID da variável de deslocamento

class Game_Screen
  def initialize
    @tone = Tone.new(0, 0, 0, 0)
    @tone_target = Tone.new(0, 0, 0, 0)
    @tone_duration = 0
    @flash_color = Color.new(0, 0, 0, 0)
    @flash_duration = 0
    @shake_power = 0
    @shake_speed = 0
    @shake_duration = 0
    @shake_direction = 1
    @shake = 0
    @pictures = [nil]
    for i in 1..$PICTURE_MAXNUM*2
      @pictures.push(Game_Picture.new(i))
    end
    @weather_type = 0
    @weather_max = 0.0
    @weather_type_target = 0
    @weather_max_target = 0.0
    @weather_duration = 0
  end
  #--------------------------------------------------------------------------
  # Atualização do Frame
  #--------------------------------------------------------------------------

  def update
    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 @flash_duration >= 1
      d = @flash_duration
      @flash_color.alpha = @flash_color.alpha * (d - 1) / d
      @flash_duration -= 1
    end
    if @shake_duration >= 1 or @shake != 0
      delta = (@shake_power * @shake_speed * @shake_direction) / 10.0
      if @shake_duration <= 1 and @shake * (@shake + delta) < 0
        @shake = 0
      else
        @shake += delta
      end
      if @shake > @shake_power * 2
        @shake_direction = -1
      end
      if @shake < - @shake_power * 2
        @shake_direction = 1
      end
      if @shake_duration >= 1
        @shake_duration -= 1
      end
    end
    if @weather_duration >= 1
      d = @weather_duration
      @weather_max = (@weather_max * (d - 1) + @weather_max_target) / d
      @weather_duration -= 1
      if @weather_duration == 0
        @weather_type = @weather_type_target
      end
    end
    if $game_temp.in_battle
      for i in $PICTURE_MAXNUM+1..$PICTURE_MAXNUM*2
        @pictures[i].update
      end
    else
      for i in 1..$PICTURE_MAXNUM*2
        @pictures[i].update
      end
    end
  end
end

class Spriteset_Map

  #--------------------------------------------------------------------------
  # Inicialização dos Objetos
  #--------------------------------------------------------------------------

  def initialize
    # Criar pontos de vista
    @viewport1 = Viewport.new(0, 0, 640, 480)
    @viewport2 = Viewport.new(0, 0, 640, 480)
    @viewport3 = Viewport.new(0, 0, 640, 480)
    @viewport2.z = 200
    @viewport3.z = 5000
    # Aqui é criado um tilemap que comporta o tileset e seus autotiles
    @tilemap = Tilemap.new(@viewport1)
    @tilemap.tileset = RPG::Cache.tileset($game_map.tileset_name)
    for i in 0..6
      autotile_name = $game_map.autotile_names[i]
      @tilemap.autotiles[i] = RPG::Cache.autotile(autotile_name)
    end
    @tilemap.map_data = $game_map.data
    @tilemap.priorities = $game_map.priorities
    # Aqui é criado um plano para o Panorama
    @panorama = Plane.new(@viewport1)
    @panorama.z = -1000
    # Aqui é criado outro plano, para a Névoa
    @fog = Plane.new(@viewport1)
    @fog.z = 3000
    # Aqui são criados os sprites dos Heróis
    @character_sprites = []
    for i in $game_map.events.keys.sort
      sprite = Sprite_Character.new(@viewport1, $game_map.events[i])
      @character_sprites.push(sprite)
    end
    @character_sprites.push(Sprite_Character.new(@viewport1, $game_player))
    # Aqui é criado o Clima
    @weather = RPG::Weather.new(@viewport1)
    # Aqui são criados os sprites das Figuras
    @picture_sprites = []
    for i in 1..$PICTURE_MAXNUM
      @picture_sprites.push(Sprite_Picture.new(@viewport2,
        $game_screen.pictures[i]))
    end
    # Aqui é criado o sprite do Temporizador
    @timer_sprite = Sprite_Timer.new
    # E aqui o frame é atualizado
    update
  end
end

class Spriteset_Battle
  def initialize
    # Criação dos viewports
    @viewport1 = Viewport.new(0, 0, 640, 320)
    @viewport2 = Viewport.new(0, 0, 640, 480)
    @viewport3 = Viewport.new(0, 0, 640, 480)
    @viewport4 = Viewport.new(0, 0, 640, 480)
    @viewport2.z = 101
    @viewport3.z = 200
    @viewport4.z = 5000
    # Criação do sprite de Fundo de Batalha
    @battleback_sprite = Sprite.new(@viewport1)
    # Criação dos sprites dos Inimigos
    @enemy_sprites = []
    for enemy in $game_troop.enemies.reverse
      @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
    end
    # Criação dos sprites dos heróis
    @actor_sprites = []
    @actor_sprites.push(Sprite_Battler.new(@viewport2))
    @actor_sprites.push(Sprite_Battler.new(@viewport2))
    @actor_sprites.push(Sprite_Battler.new(@viewport2))
    @actor_sprites.push(Sprite_Battler.new(@viewport2))
    # Criação do Clima
    @weather = RPG::Weather.new(@viewport1)
    # Criação das Imagens
    @picture_sprites = []
    for i in $PICTURE_MAXNUM+1..$PICTURE_MAXNUM*2
      @picture_sprites.push(Sprite_Picture.new(@viewport3,
        $game_screen.pictures[i]))
    end
    # Criação do sprite do Temporizador
    @timer_sprite = Sprite_Timer.new
    # Atualização do frame
    update
  end
end

class Interpreter
  #--------------------------------------------------------------------------
  # Mostrar Imagem
  #--------------------------------------------------------------------------

  def command_231
    # Selecionar o número da imagem
    number = @parameters[0] + $game_variables[$PICTURE_OFFSET]*50 +

($game_temp.in_battle ? $PICTURE_MAXNUM : 0)
    # Se o método de endereçamento for por apontamento
    if @parameters[3] == 0
      x = @parameters[4]
      y = @parameters[5]
    # Se o método de endereçamento for por variáveis
    else
      x = $game_variables[@parameters[4]]
      y = $game_variables[@parameters[5]]
    end
    # Exibir imagem
    $game_screen.pictures[number].show(@parameters[1], @parameters[2],
      x, y, @parameters[6], @parameters[7], @parameters[8], @parameters[9])
    # Continuar
    return true
  end

  #--------------------------------------------------------------------------
  # Mover Imagem
  #--------------------------------------------------------------------------

  def command_232
    # Selecionar o número da imagem
    number = @parameters[0] + $game_variables[$PICTURE_OFFSET]*50 +

($game_temp.in_battle ? $PICTURE_MAXNUM : 0)
    # Se o método de endereçamento for por apontamento
    if @parameters[3] == 0
      x = @parameters[4]
      y = @parameters[5]
    # Se o método de endereçamento for por variáveis
    else
      x = $game_variables[@parameters[4]]
      y = $game_variables[@parameters[5]]
    end
    # Mover imagem
    $game_screen.pictures[number].move(@parameters[1] * 2, @parameters[2],
      x, y, @parameters[6], @parameters[7], @parameters[8], @parameters[9])
    # Continuar
    return true
  end

  #--------------------------------------------------------------------------
  # Girar Imagem
  #--------------------------------------------------------------------------

  def command_233
    # Selecionar o número da imagem
    number = @parameters[0] + $game_variables[$PICTURE_OFFSET]*50 +

($game_temp.in_battle ? $PICTURE_MAXNUM : 0)
    # Selecionar a velocidade de rotação
    $game_screen.pictures[number].rotate(@parameters[1])
    # Continuar
    return true
  end

  #--------------------------------------------------------------------------
  # Tonalidade da Imagem
  #--------------------------------------------------------------------------

  def command_234
    # Selecionar o número da imagem
    number = @parameters[0] + $game_variables[$PICTURE_OFFSET]*50 +

($game_temp.in_battle ? $PICTURE_MAXNUM : 0)
    # Iniciar troca de tonalidade da imagem
    $game_screen.pictures[number].start_tone_change(@parameters[1],
      @parameters[2] * 2)
    # Continuar
    return true
  end

  #--------------------------------------------------------------------------
  # Deletar Imagem
  #--------------------------------------------------------------------------

  def command_235
    # Selecionar o número da imagem
    number = @parameters[0] + $game_variables[$PICTURE_OFFSET]*50 +

($game_temp.in_battle ? $PICTURE_MAXNUM : 0)
    # Deletar imagem
    $game_screen.pictures[number].erase
    # Continuar
    return true
  end
end

Créditos e Agradecimentos

  • Colaboração do pedro (HCDO)

br_lemes, o Gnomo insano (Suicida)