O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

É passável?

Iniciado por TensaZangetsu, 28/01/2018 às 21:35

28/01/2018 às 21:35 Última edição: 31/03/2018 às 13:07 por TensaZangetsu
Se não quiser perder o seu tempo lendo tudo o que aconteceu na minha trajetória para chegar na pergunta, é só pular tudo que tá na box.

Estou fazendo um sisteminha de pulo :fifufi: por eventos no MV, estava tudo dando certo até que, eu pulei dentro de uma árvore :T.T: então eu feliz pensando que sabia como resolver, fui lá arrumar isso.
Primeiro eu defini as variáveis 13, 14 e 15 com X, Y e a direção do personagem, então coloquei uma condição com Script:
$gameMap.isPassable($gameVariables.value(13), $gameVariables.value(14), $gameVariables.value(15))

Ficou assim:
Então fui lá testar e o maldito personagem continuava pulando dentro da árvore :grr: porém quando estava dentro da árvore ele não pulava mais, tive um progresso. Então fui lá novamente feliz pensando que sabia como resolver.
Pensei que o sistema deve estar verificando o lugar onde o player está é passável, então eu fiz uma "gambiarrazinha"  pra verificar 1 tile a frente da direção do personagem.
Ficou assim²:
E novamente fui lá testar, e adivinha :hein: o personagem não pulou a árvore :*-*: então feliz da vida fui pular coisa alheias, e o personagem pulou em cima de um evento :flipstable:

Depois de ter dito isso, eu quero saber como fazer para o personagem não pular em cima do evento. :hein:

Será que ainda precisa de ajuda com isto?

Bom, eu li, mas tenho uma dificuldade muito grande em entender sistemas de outras pessoas, e ainda mais, de identificar erros neles. Então, uma vez que eu também fiz um sisteminha de pulo, te aconselharia a fazê-lo assim:

Vai ter uma tecla específica para o pulo. Ao pressioná-la, você irá armazenar a coordenada X e Y de onde o personagem vai parar quando terminar o pulo. Para demarcar tiles impassáveis, eu uso as regiões. Sendo assim, usando outra variável você vai pegar as informações do tile correspondente às coordenadas armazenadas (há um comando para pegar essas informações na terceira aba dos comandos por eventos na categoria Mapa). Primeiro irá pegar o ID da região, se for igual ao ID com que marcou, o tile é impassável e o personagem não irá pular. Se a região não for empecilho, pelo mesmo comando você irá pegar o ID do evento, daí, se houver um evento neste tile, o ID retornado será maior do que zero, informando assim que há um evento lá e portanto não é possível realizar o pulo.

Daí em diante tu pode verificar também o trajeto do pulo, para impedir que o personagem atravesse paredes, ou fazer com que o pulo seja possível mesmo com o destino impassável, entretanto, parando no último tile passável por qual o pulo passará. Vai de quais funções você quer por no pulo.

Citação de: King Gerar online 30/03/2018 às 11:04
Será que ainda precisa de ajuda com isto?
Eu consegui arrumar. Mas como é bom sempre aprender mais, coloquei seu plano em pratica.

Citação de: King Gerar online 30/03/2018 às 11:04
Bom, eu li, mas tenho uma dificuldade muito grande em entender sistemas de outras pessoas, e ainda mais, de identificar erros neles.
Não te culpo por não ter entendido. Não sei onde eu tava com a cabeça e mostrei da pior maneira o problema

Citação de: King Gerar online 30/03/2018 às 11:04
Vai ter uma tecla específica para o pulo. Ao pressioná-la, você irá armazenar a coordenada X e Y de onde o personagem vai parar quando terminar o pulo. Para demarcar tiles impassáveis, eu uso as regiões. Sendo assim, usando outra variável você vai pegar as informações do tile correspondente às coordenadas armazenadas (há um comando para pegar essas informações na terceira aba dos comandos por eventos na categoria Mapa). Primeiro irá pegar o ID da região, se for igual ao ID com que marcou, o tile é impassável e o personagem não irá pular. Se a região não for empecilho, pelo mesmo comando você irá pegar o ID do evento, daí, se houver um evento neste tile, o ID retornado será maior do que zero, informando assim que há um evento lá e portanto não é possível realizar o pulo.

Daí em diante tu pode verificar também o trajeto do pulo, para impedir que o personagem atravesse paredes, ou fazer com que o pulo seja possível mesmo com o destino impassável, entretanto, parando no último tile passável por qual o pulo passará. Vai de quais funções você quer por no pulo.
A primeira coisa que eu pensei foi em fazer dessa maneira, mas e a preguiça de mapear as regiões?! Então fui lá e fiz do jeito que demostrei no tópico acima, cheio de coisas desnecessárias e repetidas (é sério, onde eu tava com a cabeça nesse dia?). Mesmo com o sistema cheio de furos, ele estava "funcionando", só dava problema quando tinha algum evento. Então, +ou- uns 3 dias depois(acho que minha cabeça já estava normal), apaguei tudo e refiz, só que dessa vez sem coisas repetidas de desnecessárias, o sistema diminuiu muito, muito mesmo. Coloquei várias funcionalidades nele, como pulo maior, menor etc. Infelizmente, continuava com o mesmo erro quando tinha um evento. Então tive a brilhante ideia de colocar um Tile "bloqueado" em baixo do evento, e deu certo :wow:

Mas como eu disse no começo, coloquei sua maneira em pratica e deu certo, dá um pouco mais de trabalho por ter que mapear as regiões, mas nada de demais.

Brigadão, Gerar :XD: