1 Anya transition Zoom 12/8/2012, 04:30
FrozenGraveyard
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
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
Não visivel por screenshot
AGRADECIMENTOS
Fabien pelo script de blur
Corbaque pelo sistema de transições de batalha
Criado por Alex Crosslight