Templo RPG Maker
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Você não está conectado. Conecte-se ou registre-se

Ver o tópico anterior Ver o tópico seguinte Ir para baixo  Mensagem [Página 1 de 1]

1Anya transition Zoom Empty Anya transition Zoom 12/8/2012, 04:30

FrozenGraveyard

FrozenGraveyard
Membro Honorário I
Membro Honorário I
INTRODUÇÃO

Essa é uma adaptação de uma das transições do "Novas transições de batalha" para funcionar como uma transição de mapa, a escolhida foi a de zoom, que aproxima o mapa da tela.

DESCRIÇÃO


Transição de mapas com zoom.

DEMO

Não necessária

SCRIPT

Código:
=begin

Anya transition Zoom

Script parte do sistema Anya, sua disponibilização e de qualquer
script fora do sistema é expressamente proibida.

Esse script cria uma transição com zoom de um mapa para outro.

Para tal efeito, use o comando chamar script digitando:

move_tomap(x,y,map)

onde:

x = coordenada X
y = coordenada y
map = mapa destino.

=end

module Cross
 
  SOUND = "013-Move02"
 
end

#===============================================================================
#Permite que você adicione a função screenshot, aperte o botão
#F5 para capturar a imagem, é necessário o arquivo screenshot.dll
#################################################################
# Screenshot V2
# Screenshot Script v1 & screenshot.dll v1            created by: Andreas21
# Screenshot Script v2                                created/edit by: cybersam
#===============================================================================

module Screen
 
  @screen = Win32API.new 'screenshot', 'Screenshot', %w(l l l l p l l), ''
  @readini = Win32API.new 'kernel32', 'GetPrivateProfileStringA', %w(p p p p l p), 'l'
  @findwindow = Win32API.new 'user32', 'FindWindowA', %w(p p), 'l'
  module_function
  def shot(file = "screenshot", typ = 2)
    if typ == 0
      typname = ".bmp"
    elsif typ == 1
      typname = ".jpg"
    elsif typ == 2
      typname = ".png"
    end
    file_index = 0
    dir = "Graphics/Pictures/"
    file_name = dir + file.to_s + typname.to_s
    @screen.call(0,0,640,480,file_name,handel,typ)
  end
  def handel
    game_name = "\0" * 256
    @readini.call('Game','Title','',game_name,255,".\\Game.ini")
    game_name.delete!("\0")
    return @findwindow.call('RGSS Player',game_name)
  end
end

=begin
Le flouteur(blur)

Por Fabien
Versão: 1.2
Explicação por Fábio e Hina
Traduzido por Alexander Ernest Crosslight

=============================

Introdução:

O script analisa uma imagem e a partir dela cria uma nova com efeito de blur
(embaço). Esse efeito pode ser aplicado tanto a imagens quanto a chars no mapa.
=============================

Instruções de uso:

> Cole o script acima do main
> Para criar o efeito, usando dentro de um script ou pelo comando "chamar script",
a sintaxe:
 
flou(destino,raio)

> destino: se for uma string ("texto entre aspas"), o objeto a receber um
efeito é uma imagem com endereço especificado, e se for uma string (numero), o
objeto é um char do mapa, tendo em mente que 0 é para o herói e qualquer outro
número é a ID do char.

> raio: valor do blur.

Há também o método flou_lourd(destino,raio) que cria um efeito melhor, só que
ele pode causar travamento imediato do jogo.
============================

=end

def flou(original,rayon=1) # consiste à blt l'image plusieurs en variant l'opacité.
  #préparation de l'image de base, si ce n'est pas déjà un bitmap
  original= Bitmap.new(original) if original.is_a?(String)
  if original.is_a?(Numeric)
    original=0 ? original=$game_player.character_name : original=$game_map.events[original].character_name
    original=RPG::Cache.character(original,0)
  end
  #flou horizontal
  bitmap1=Bitmap.new(original.width+2*rayon,original.height)
  for n in -rayon...rayon
    bitmap1.blt(n+rayon,0,original,original.rect,255/(2*rayon) )
  end
 
  #flou vertical
  bitmap2=Bitmap.new(original.width+2*rayon,original.height+2*rayon)
  for n in -rayon...rayon
    bitmap2.blt(0,n+rayon,bitmap1,bitmap1.rect,255/(2*rayon) )
  end
 
  # restitution de l'opacité originelle
  bitmapf=Bitmap.new(original.width+2*rayon,original.height+2*rayon)
  rayon.times do
    bitmapf.blt(0,0,bitmap2,bitmap2.rect)
  end
 
  bitmap1.dispose
  bitmap2.dispose
  return bitmapf
end
#-----------------------------------------------------------------------------------------------------------------
def flou_lourd(bitmap_source,rayon=1) # consiste à faire de chaque pixel de l'image d'arrivée la moyenne des pixels alentours sur l'image de départ
  bitmap_source=Bitmap.new(bitmap_source) if bitmap_source.is_a?(String)
  bitmap_flou=Bitmap.new(bitmap_source.width+rayon*2,bitmap_source.height+rayon*2)
  r=(2*rayon+1)*(2*rayon+1)
  for x in 0...bitmap_flou.width # pour chaque pixel de l'image flou
    for y in 0...bitmap_flou.height
      rouge=vert=bleu=alpha=0
      a=x-rayon
      b=y-rayon
      nbr_de_prelev=0
      for dx in -rayon..rayon
        for dy in -rayon..rayon
          c=a+dx
          d=b+dy
          if c>0 and d>0 and c<bitmap_source.width and d<bitmap_source.height
          nbr_de_prelev+=1
          couleur_prelevée=bitmap_source.get_pixel(c,d)
          rouge+=couleur_prelevée.red
          vert+=couleur_prelevée.green
          bleu+=couleur_prelevée.blue
          alpha+=couleur_prelevée.alpha
          end     
        end
      end
      if nbr_de_prelev>0
        rouge/=nbr_de_prelev
        vert/=nbr_de_prelev
        bleu/=nbr_de_prelev
        alpha/=r
      else
        alpha=0
      end
      bitmap_flou.set_pixel(x,y,Color.new(rouge,vert,bleu,alpha) )
    end
  end
  return bitmap_flou
end

class Interpreter
 
  def move_tomap(x,y,map)
    $x = x
    $y = y
    $map = map
    $scene = Scene_Anyatransition.new
  end
end 

class Scene_Anyatransition
 
  #-------------------------------------------------------------
  def main
    Audio.se_play("Audio/SE/" + Cross::SOUND,100,100)
    Screen::shot
    @zx = 5 / 100.0
    @zy = 5 / 100.0
    @screen = Sprite.new
    @screen.bitmap = flou("Graphics/Pictures/screenshot",3)
    @screen.x = 320
    @screen.y = 240
    @screen.ox = 320
    @screen.oy = 240
        # Executar transição
    Graphics.transition
    # Loop principal
    loop do
      # Atualizar a tela de jogo
      Graphics.update
      # Atualizar a entrada de informações
      Input.update
      # Atualizar Frame
      update
      # Abortar loop se a tela for alterada
      if $scene != self
        break
      end
    end
    # Preparar para transiçõa
    Graphics.freeze
    @screen.dispose
  end
  #-------------------------------------------------------------
  def update
    @continue = false
    @screen.zoom_x += (@zx) * @screen.zoom_x
    @screen.zoom_y += (@zy) * @screen.zoom_y
    @screen.opacity -= (@zx + @zy) * 100
    if @screen.zoom_x > 5
      @continue = true
    end
    finish if (@continue)
  end
  #-------------------------------------------------------------
  def finish
    $game_map.setup($map) #teleporta para mapa X
    $game_player.moveto($x,$y)#coordenadas do teleporte, X é x e Y é y
    $scene = Scene_Map.new
  end
end

INSTRUÇÕES


> Cole o script acima do main, para invocar a transição, utilize o comando no chamar script:
move_tomap(posição x,posição y,mapa destino)
> Cole também a dll screenshot que pode ser baixada aqui na pasta de seu projeto (Onde fica o game.exe).

IMAGENS

Não visivel por screenshot

AGRADECIMENTOS


Fabien pelo script de blur
Corbaque pelo sistema de transições de batalha
Criado por Alex Crosslight

Ver o tópico anterior Ver o tópico seguinte Ir para o topo  Mensagem [Página 1 de 1]

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