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

Um comando anula o outro

Iniciado por narutard, 08/07/2018 às 22:22

08/07/2018 às 22:22 Última edição: 11/08/2018 às 10:50 por Corvo
então
eu tava fazendo meu joguinho pra crm jam e tava trabalhando com região que trigger acontecimentos, sendo que pra algumas o player tinha que apertar um botão específico, só que quando o player aperta o botão o comando de outra região é anulado, aí outro evento deixa de acontecer (tá tudo em processo paralelo)

não sei se deu para entender, um exemplo:
- a região 1 define que um personagem que não para de se mover vai para a esquerda e a região 2 que esse personagem vai para a direita, aí fica nesse loop
- a região 3 define que botão para cima ativado quebra um objeto lá (outro personagem tá na região 3)
- aí quando executa o comando da região 3, se o primeiro personagem estiver na 1 ou na 2, não vai virar para a esquerda/direita, vai continuar andando, porque os comandos foram anulados pela região 3

isso basicamente detonou toda a mecânica do meu jogo kk não achei nada sobre isso no google. dá pra consertar? ou é coisa do maker?

Isso tá sendo programado por eventos, certo? Muito provavelmente é algo errado na sua programação. Tipo, em casos mais de uma condição pode ser satisfeita, tem que se prestar muita atenção para que não haja como uma atrapalhar a outra, e talvez esse seja o teu caso: quando tu espera que uma condição seja lida, uma é lida e satisfeita antes. Se der, posta prints da programação aí pra gente ver. O agravante mesmo aí é o horário e dar tempo de corrigir e enviar a participação.

08/07/2018 às 23:09 #2 Última edição: 08/07/2018 às 23:12 por narutard
isso, por eventos
eu já aceitei que não vai dar pra enviar kk esse foi um problema que me interrompeu, mas tem outros que eu ainda tô lidando

sobre o que você disse: pode ser essa parada da condição, porque eu coloco tudo no mesmo nível, mas não sei se tenho cérebro pra trabalhar com condição em todos esses casos

ilustrando o exemplo:

o movimento básico eu coloco em evento comum e chamo no mapa


aí em cada mapa eu faço manualmente o momento da habilidade, porque não deu certo quando eu tentei fazer no evento comum, por causa disso de comandos se anularem

aa esqueci de falar que o player region é um evento comum também que localiza a id dos eventos nos mapas, pra seguirem os comandos das regiões. só dá problema quando a habilidade é usada ao mesmo tempo que o outro evento tá na região, porque se estiver fora tudo segue ok

É, sem uma explicação beeem detalhada - até porque a barrinha de scroll ali denuncia que essa programação ficou grandinha - ou uma forma de ver isso funcionando no projeto eu não consigo entender. Tipo, tu falou o que é o Player Region, mas tem outros três ali no começo, além de que parece que cada um desses eventos comuns tem uma variável também.

Mas assim, se esses eventos só funcionam para dar ordens de movimentos ao personagem e a eventos, tu tem que levar em consideração algumas coisas:

- O eventos (incluindo o personagem) só executam um movimento quando estão parados. Eles não conseguem mudar a trajetória enquanto estão se movendo ou fazer um movimento reto mais longo. Os eventos são ordenados a se moverem à distância de um tile, param e verificam se há comandos para se moverem mais. Então tu pode aproveitar essa característica para verificar se o evento está parado antes de ordená-lo movimento. Talvez você esteja dando ordens aos eventos e eles estejam ignorando justamente por não poderem executá-la naquela momento, e quando podem, já são outras ordens, visto que o evento que gera as ordens está em processo paralelo e é lido constantemente.

- Tu usando números para as condições usarem é meio impossível de a condição errada ser satisfeita, somente se a variável da condição tiver o número errado mesmo, mas tu pode usar as exceções das condições para minimizar esses erros. Assim, ou a condição será satisfeita, ou sua exceção, nunca ambas. Aí cabe também tu usar o console.log para verificar se a informação correta está sendo enviada do evento comum (ou de onde gera o valor da variável da condição) para o sistema.

é que o resto da programação é tudo a mesma coisa, só que dando ordens para outras regiões. tipo, esqueci de falar que o player movement é o movimento básico que eu coloquei antes e o amiga region e movement é a mesma coisa, só que com outro personagem. tô dando uma olhada nisso que você disse, tive umas ideias. valeu aí. se tu quiser eu tiro print do resto, sei lá. atualizo aqui se conseguir ou não

Opa, se não for muito trabalho, upa o projeto pra gente. Eu realmente tenho dificuldade em vislumbrar esses problemas porque são inúmeras coisas que podem causá-los, principalmente lidando com eventos. Se tu não descobrir até o fim de semana, nele, em que tenho tempo, baixo e dou uma fuçada pra ver se encontro uma solução.

Mas assim, tenho quase certeza que é alguma falha tua na programação, é muito comum a gente perder a atenção um pouco e vacilar, daí pra achar o erro depois é um martírio. Tenta salvar esse sistema à parte e ir refazendo ele, aos pouquinhos e testando, escrevendo comentários para te ajudar a entender. É um trabalho um pouco massante mas te garanto que, quando conseguir fazer funcionar, dará uma satisfação danada.

10/07/2018 às 12:35 #6 Última edição: 11/07/2018 às 18:25 por narutard
po valeu, pode baixar por esse link: https://drive.google.com/drive/folders/168EgURvJnW38LgmOIaUqO7x8jR4rPVAT?usp=sharing

o sistema nem é difícil, eu que não sei programar kk o mapa que eu dei como exemplo é o 2, mas acontece nos outros que vêm depois também. só não acontece no 1 porque só tem um personagem lá

Então, eu executei no primeiro mapa aqui.


De início as duas bonequinhas andam para direita e ao chegarem na primeira região, retornam. Quando eu aperto pra cima, a boneca de baixo pula no gelo, depois pra fora da tela e dá game over. E assim, não são três regiões. Só nessa tela são oito e tu falou que nem dá o erro aqui.

Acho que comecei a entender tua ideia: seria tu não ter controle sobre os personagens no mapa diretamente, mas tu controlaria o movimento deles indiretamente, certo? Utilizando o personagem principal para fazer as rotas dos eventos mudarem conforme a região em que estão e na tecla apertada pelo jogador, certo? Tomara que seja, se não, não entendi nada mesmo uehaueh Só que assim, o problema é que tu fez muito, utilizou muitas regiões, eu não consigo identificar qual faz o quê. É tipo tu deixar de levar o carro para consertar quando a trava parou de funcionar e levar quando o motor tá engasgando, pneus desalinhados, ignição ruim e demais problemas, saka!?

Eu recomendo tu esquecer isso e começar do zero outro. Pega um único evento, usa uma única região e faz. Funcionou? Pega outra região, coloca, e vê se deu certo. Deu? Vai pra próxima. Não deu? Aí tu procura suporte com um problema menor e mais específico, fica bem mais fácil de saber onde procurar o erro. Apesar de supor que está na programação, não vejo outra solução nesse projeto que enviou senão reprogramar tudo.

não, esse é o mapa em que os erros começam kk os de boa são os que têm só a de baixo

mas tranquilo, imaginei que ia ter que fazer tudo de novo. tu entendeu certo o propósito do sistema, só não sei se vale a pena todo esse trabalho kk era pra ser simples

valeu pela ajuda