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

Como fazer um sistema de Surf igual do Pokémon com eventos?

Iniciado por mat_graz, 03/05/2020 às 11:26

Como eu poderia reproduzir o surf do pokemon no sentido de: pressiona confirma num tile de água/ 'deseja nadar?' Sim,Não/ nadar livremente nos tiles de água.

Eu pensei em algumas soluções: uma ia ser fazer um evento desse em toda borda d'água, mas isso ia ser nada prática. Outra ideia foi fazer um evento paralelo calculando a coordenada e uma condição pra cada linha de borda d'água (por ex, se tem uma borda dágua que tem uma largura de 5 tiles indo do tile 7 ao 12, eu colocaria um 'Se variável Jogador X ≤ 12 e ≥ 7. Mas essa solução tb parece até mais complicada do que a do evento. Pensei tb em usar o sistema de barco nativo do RPG Maker, mas acho q ele sempre tem que tá num lugar específico, queria que pudesse ir a partir de qlqr lugar

Alguma ideia?

A ideia de fazer manualmente só é ruim se você tiver um vasto "corredor" para começar a nadar. Em Pokémon Yellow, se não me engano, não existe tantas opções assim, você sempre está mais ou menos 'obrigado' a começar a nadar naquele pedacinho ali. Ah, lembrei agora daquela caverna escura, que expande um pouco.

Ok, na minha opinião, a melhor forma de fazer seria verificando o terreno que está nas 4 direções (acima, abaixo, à esquerda, à direita) do herói. Explico:

Se X + 1 = Água
Se X - 1 = Água
Se Y + 1 = Água
Se Y - 1 = Água

Se qualquer uma dessas condições for verdadeira, então você habilita o sistema de surf. Lembrando que você pode utilizar dois ou mais tiles de água, mas é importante estabelecer um padrão para que a borda seja a água clara, por exemplo.
Unique Destiny | um novo conceito de RPG Maker 2000!

Citação de: Avenger_B7 online 03/05/2020 às 12:50
A ideia de fazer manualmente só é ruim se você tiver um vasto "corredor" para começar a nadar. Em Pokémon Yellow, se não me engano, não existe tantas opções assim, você sempre está mais ou menos 'obrigado' a começar a nadar naquele pedacinho ali. Ah, lembrei agora daquela caverna escura, que expande um pouco.

Ok, na minha opinião, a melhor forma de fazer seria verificando o terreno que está nas 4 direções (acima, abaixo, à esquerda, à direita) do herói. Explico:

Se X + 1 = Água
Se X - 1 = Água
Se Y + 1 = Água
Se Y - 1 = Água

Se qualquer uma dessas condições for verdadeira, então você habilita o sistema de surf. Lembrando que você pode utilizar dois ou mais tiles de água, mas é importante estabelecer um padrão para que a borda seja a água clara, por exemplo.

É, talvez seja uma parada de pensar enquanto tá fazendo os mapas. Mas aí nessa sugestão como que vc faz pra checar se um tile é água? Eu sei como controlar a coordenada do Jogador/Evento mas nao do jogo checar qual é o tipo de tile..

Esse não é o tipo de sistema que eu recomendaria fazer por eventos. É possível? Sim, eu inclusive fiz o sistema aqui brincando no Ace, mas definitivamente não é algo muito viável por eventos. O ideal seria você procurar algum plugin que faça isso. Dei uma pesquisada por cima e encontrei esse daqui, dá uma olhada se ele serve para o que você deseja fazer.




De todo modo, se liga em como seria o sistema feito por eventos:
Spoiler
[close]
A única leve diferença para o MV seria no na parte dos códigos, mas o conceito é exatamente o mesmo. Inclusive da pra ser mais direto, cortando toda a parte das variáveis, mas fiz desse modo para ficar mais entendível.

O sistema funcionando:
Spoiler
[close]


03/05/2020 às 14:19 #4 Última edição: 03/05/2020 às 14:23 por Avenger_B7
Citação de: mat_graz online 03/05/2020 às 13:24
É, talvez seja uma parada de pensar enquanto tá fazendo os mapas. Mas aí nessa sugestão como que vc faz pra checar se um tile é água? Eu sei como controlar a coordenada do Jogador/Evento mas nao do jogo checar qual é o tipo de tile..


Esse é um exemplo no RPG Maker 2000, mas foi feito por eventos, então o conceito é o mesmo. Se tiver o comando de "Get Terrain" na engine que vc estiver utilizando, é gg izi.




Uma variável específica vai receber o ID do terreno de uma determinada posição; no caso, é a posição de um tile acima do herói (vc deve fazer isso para 4 ou 8 direções, se for o caso). Por fim, você deve comparar o valor dessa variável que recebe o ID do terreno. Se ele for igual a 9, habilita o sistema de surf; senão, desabilita. Falei 9 porque é o valor de terreno de água no RPG Maker 2000, mas isso você verifica na seção de terreno no banco de dados da sua engine. Geralmente, é próximo da aba em que especifica o tipo de passagem.
Unique Destiny | um novo conceito de RPG Maker 2000!

Citação de: Avenger_B7 online 03/05/2020 às 14:19

Esse é um exemplo no RPG Maker 2000, mas foi feito por eventos, então o conceito é o mesmo. Se tiver o comando de "Get Terrain" na engine que vc estiver utilizando, é gg izi.




Uma variável específica vai receber o ID do terreno de uma determinada posição; no caso, é a posição de um tile acima do herói (vc deve fazer isso para 4 ou 8 direções, se for o caso). Por fim, você deve comparar o valor dessa variável que recebe o ID do terreno. Se ele for igual a 9, habilita o sistema de surf; senão, desabilita. Falei 9 porque é o valor de terreno de água no RPG Maker 2000, mas isso você verifica na seção de terreno no banco de dados da sua engine. Geralmente, é próximo da aba em que especifica o tipo de passagem.


Puts acho que nao tem Get Terrain ID no Rpg Maker MV  :T.T:
Vai entender!


Ou simplesmente:
$gameMap.terrainTag(x, y)



Mas vai por mim, não vale a pena fazer isso por eventos.


Citação de: Gabriel online 03/05/2020 às 14:59

Ou simplesmente:
$gameMap.terrainTag(x, y)



Mas vai por mim, não vale a pena fazer isso por eventos.

Oxe! Tava desatento, valeu! Esse código $gameMap.terrainTag(x, y) vai aonde??

Então, to considerando as minhas opções, foda q plugin se der bug eu nao sei programação pra ir la e resolver, pelo menos eventos sao tudo dentro da interface do rpg maker q eu entendo melhor

Em Destiny Script, que é uma linguagem de programação pro RM2k, eu utilizo o seguinte código:

$ Command.GetTerrainID(a, Event[HERO].X, Event[HERO].Y);

Assim eu já consigo indicar que eu quero verificar o ID do terreno da posição do player, é algo que vai direto. Se você tiver algo semelhante no MV, é mais prático.

Você pode criar um novo projeto pra testar o código semelhante e se acostumar com ele, e, se não for confortável pra vc, continue utilizando esse comando por eventos.

Não é um bicho de 7 cabeças, você vai precisar criar uma vez só, mas o jogo é seu e o projeto também haha
Unique Destiny | um novo conceito de RPG Maker 2000!