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

como criar um sistema onde quando um evento encontra outro acontece uma ação

Iniciado por razier, 16/11/2018 às 19:35

Estou criando um sistema de armadilha para npcs e inimigos no cenario (eventos locais) no rpg maker vx ace, minha primeira ideia foi utilizar o comando condição, porem ele não tem suporte para ativação por encontro de eventos, gostaria de saber então como criar um evento onde um outro evento ao tocar ocorre uma ação pre programada no rpg maker vx ace?

 Oi Razier

Primeiro você vai igualar a posição do evento dos inimigos com uma variável X e Y e das armadilhas com outra variável X e Y. Lembrando que é necessário fazer para cada um dos inimigos e armadilhas. Depois você vai criar uma condição para verificar se o X e o Y dos eventos é igual ao das armadilhas. Caso seja, acontecerá algo determinado por você.


Então, realmente o RPG Maker não colabora quando o assunto é interação entre eventos. Porém, pra tudo existe uma gambiarra. Você já domina o funcionamento de coordenadas? Ou tem uma noção de como funcionam? A solução que uso nesses casos é a seguinte:

Em duas variáveis, selecione as coordenadas da armadilha.
Na sua condição, verifique a posição do evento a ser checado e as mantenha atualizadas. Se as coordenadas X e Y do evento forem idênticas às da armadilha, eles se tocaram e você executa o que tiver que executar. Lembre-se de empurrar o evento pra fora da armadilha, ou o evento será repetido infinitamente.


Resumindo é o que o Speed postou. ^

vocês estão falando de criar o evento no mapa atribuir a ele uma variavel, e depois usar o comando mudar a posição do evento?

Não necessariamente, vamos por partes. No RPG Maker, os mapas são como tabelas. Você tem o eixo X (horizontal) e o eixo Y (vertical) no qual os tiles são distribuídos. Um evento, nessa tabela, ocupa um quadro. Ou seja, ele possui uma coordenada no eixo X e outra no eixo Y. Imagine um jogo da velha, é basicamente a mesma coisa. No menu de definições das variáveis, você pode escolher o valor de uma coordenada para as mesmas. Veja:


Aqui a variável Position X recebe o valor da coordenada X do jogador. Onde está definido como Player você pode selecionar um evento do mapa e receber a mesma informação deste. Usando duas variáveis para os eixos X e Y você obtém a posição exata do evento/jogador. Feito isso com o evento e com a armadilha você verifica se as variáveis possuem o mesmo valor.

Compara o eixo X do evento com o eixo X da armadilha.
Compara o eixo Y do evento com o eixo Y da armadilha.

Se as duas condições forem verdadeiras, os eventos estão na mesma posição. Logo, se tocaram.

isso eu ja entendi, o x e y são as coordenadas matematicas usadas para definir cima, baixo, direita e esquerda; a minha duvida começa e como montar esse sistema, ja que na nessa game data as opções disponiveis estão em other...

As opções estão em:

Control Variables > Game Data > 1 > 2
1 = Jogador ou eventos, a lista aparece de acordo com o mapa no qual o evento é configurado.
2 = Game Map X ou Game Map Y


Depois é só montar o esquema que o Speed mostrou.

Ainda não entendi bem, o que você quis dizer, estou fazendo isso:




Isso aí é o ID do mapa. Ou seja, o número do mapa em que o evento executando esse comando está. Desmarque a opção Outros e marque Personagem.

ok... consegui montar o sistema citado pelo speed, na variavel coloquei no personagem o evento que coresponde ao inimigo como evento x1 e y1, e o evento da armadilha como armadilha x e y... o evento do inimigo esta abaixo do heroi e processo paralelo, o evento da armadilha abaixo do heroi e ao tocar evento... resultado: o inimigo para na frente do evento e nada acontece... o que eu fiz de errado?

imagem do q eu fiz no evento armadilha:


Eventos bloqueiam eventos. Um deles você precisa marcar com a opção 'Atravessar' no canto inferior esquerdo. Isso também fará com que o jogador os atravesse. Se você marcar a armadilha vai precisar fazer o mesmo esquema com o jogador pra detectar a colisão.

fiz o que você falou e o inimigo conseguiu passar pela armadilha, porem o ação que eu estabelece na condição não aconteceu, quando o inimigo passou...

É porque o evento está marcado como 'Ao Tocar Evento'. Essas condições dessas caixinha só se aplicam ao jogador. A verificação precisa ser feita em Processo Paralelo. Aliás, inclua o comando 'Esperar' no início ou no fim do evento, para evitar erros. Pode definir como cinco frames, é o suficiente.

o sistema funcionou corretamente agora com essas ultimas instruções, speed e corvo, obrigado pela força, problema resolvido, pode fechar o topico...