Mais de 5 Tilesets no RMVX Tutorial feito por FIKZ

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Mais de 5 Tilesets no RMVX Tutorial feito por FIKZ

Mensagem por Korino em Qui 18 Dez 2008, 14:55

1º Passo: Adapte seu Tileset

Umas das mais sérias limitações de sistema é que todos os tilesets devem ter a mesma
configuração de passagem, isto é, os tiles passáveis e não passáveis devem ser os
mesmo em todos os tile sets. Se você ainda não entendeu, deixe-me exemplificar: em
um tileset você colocou uma pedra e a configurou para ser não-passável, se em outro
tileset o tile estiver preenchido com grama esse grama será também não passável. Para
lidar com o problema de forma mais simples, eu divido os tilesets em regiões como as
da imagem abaixo.



Na região cinza devem ficar os tiles não passáveis, na parte amarela ficam os tiles
passáveis
e na vermelha os tiles que ficam por cima do herói. Mas claro que você
pode adaptar esse template para as necessidades do seu jogo. Vou ficar
devendo um template para os tilesets A.

2º Passo: Faça o mapa

Para fazer os mapas você deve fazer uma cópia do tileset e renomeá-lo para TileA1,
TileA2, TileA3, TileA4, TileA5, TileB, TileC, TileD ou TileE dependendo da camada em que
pretende usá-lo. Sempre que você quiser editar o mapa, você deve repetir esse
procedimento. Como você deve querer voltar ao mesmo mapa várias vezes você vai se ver
tendo que repetir esse procedimento chato milhares de vezes, o que é outra
desvandagem do sistema. Outra proibiçao é que você não deve jamais fazer eventos
com gráficos do tilset (embora você possa pegar o tile, transformá-lo num charset
e usá-lo).

3º Passo: Scripting

Não será muito difícil essa parte. Abra o editor de scripts e vá na classe
"Spriteset_Map". Nas linhas 36 a 49 você deve ver o seguinte:


Código: [Select]
def create_tilemap
@tilemap = Tilemap.new(@viewport1)
@tilemap.bitmaps[0] = Cache.system("TileA1")
@tilemap.bitmaps[1] = Cache.system("TileA2")
@tilemap.bitmaps[2] = Cache.system("TileA3")
@tilemap.bitmaps[3] = Cache.system("TileA4")
@tilemap.bitmaps[4] = Cache.system("TileA5")
@tilemap.bitmaps[5] = Cache.system("TileB")
@tilemap.bitmaps[6] = Cache.system("TileC")
@tilemap.bitmaps[7] = Cache.system("TileD")
@tilemap.bitmaps[8] = Cache.system("TileE")
@tilemap.map_data = $game_map.data
@tilemap.passages = $game_map.passages
end
Substiua esse segmento de código por:


Código: [Select]
def create_tilemap
@tilemap = Tilemap.new(@viewport1)
@tilemap.bitmaps[0] = Cache.system($TileA1)
@tilemap.bitmaps[1] = Cache.system($TileA2)
@tilemap.bitmaps[2] = Cache.system($TileA3)
@tilemap.bitmaps[3] = Cache.system($TileA4)
@tilemap.bitmaps[4] = Cache.system($TileA5)
@tilemap.bitmaps[5] = Cache.system($TileB)
@tilemap.bitmaps[6] = Cache.system($TileC)
@tilemap.bitmaps[7] = Cache.system($TileD)
@tilemap.bitmaps[8] = Cache.system($TileE)
@tilemap.map_data = $game_map.data
@tilemap.passages = $game_map.passages
end

Como pode ver, eu só substitui as aspas por um $ antes de cada tileset,
transformando-os em variáveis globais. Se você tentar rodar o jogo, vai receber uma
mensagem de erro, isso porque é preciso inciar as variáveis antes de o script ser
executado. Para isso vá na classe "Main" e no começo adicione as seguintes linhas:

Código: [Select]
$TileA1 = "TileA1"
$TileA2 = "TileA2"
$TileA3 = "TileA3"
$TileA4 = "TileA4"
$TileA5 = "TileA5"
$TileB = "TileB"
$TileC = "TileC"
$TileD = "TileD"
$TileE = "TileE"

Isso faz com que os tilesets no início do jogo sejam os do RTP (se você não tiver
nenhum tileset com mesmo nome na pasta do jogo).
Agora
vem o pulo do gato: coloque que a posição inicial do herói seja em um
mapa vazio com um evento paralelo com os seguintes comandos:

Chamar Script (digite o código aí em baixo):

Código: [Select]
$TileA1 = "nome_do_tileset_A1_usado_no_mapa"
$TileA2 = "nome_do_tileset_A2_usado_no_mapa"
.
.
.
$TileE = "nome_do_tileset_E_usado_no_mapa"

Teleport para o mapa

Pa-pum!
Se você fizer isso toda vez que for fazer um teleport para outro mapa,
poderá usar quantos tilesets quiser, é só mudar o nome dos tilesets
quando usar o comando "Chamar Script". Mas lembre-se que o "Chamar
Script" deve vir antes do teleport.

Apêndice: O Problema do Save

Um
bug que o sistema tem é que, como na tela de título os tilesets sempre
voltam ao ser o do RTP, quando se salvar o jogo e depois tentar
carregá-lo, o mapa em que o jogo foi salvo vai ficar todo estragado.
Para contornar este problema é necessário proibir que o jogo seja salvo
através do menu e permitir apenas que se salve o jogo através de save
points. Os save points devem ser feitos da seguinte maneira:

Fade out
Teleport para um mapa vazio

Neste mapa vazio faça o evento paralelo:

Chamar Menu de Save
Chamar Script:

Código: [Select]
$TileA1 = "nome_do_tileset_A1_usado_no_mapa"
$TileA2 = "nome_do_tileset_A2_usado_no_mapa"
.
.
.
$TileE = "nome_do_tileset_E_usado_no_mapa"
Teleport para o mapa anterior
Fate in

Pronto, apesar de ficar um pouco devagar e fazer com que cada save point precise de um mapa, o método funciona. :afro:
avatar
Korino
Forasteiro
Forasteiro

Masculino
Número de Mensagens : 26
Qual Maker você usa? : RPG Maker XP
Reputação Reputação : 4

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum