Processo Paralelo e Tocar Evento ao mesmo tempo?

12 Respostas   1366 Visualizações

0 Membros e 1 Visitante estão vendo este tópico.

Harden

  • *
  • Posts: 163
  • Ouros: 145
  • Preciso pagar o aluguel
Tópico criado em: 14/02/2016 às 12:52 - Última modificação por Skyloftian em 16/02/2016 às 12:19

Ola,

Estou com um pequeno problema em algo que estou tentando criar.

Eu preciso que um evento siga em processo paralelo e ao mesmo tempo siga em tocar evento/player.
Há alguma condição que eu possa usar para que seja verificado se o evento toca o jogador? Algum comando de script ou algo assim.

Cogitei usar variaveis X e Y da posicao do personagem, mas acabaria dando conflito por serem varios eventos do mesmo tipo no mesmo mapa.

Alguem sabe algum metodo?
Your drill is the drill that will pierce the Heavens!

Lima

Resposta 1: 14/02/2016 às 12:59

Deve haver algo mais fácil, mas pode tentar:

Cria dois eventos para o mesmo, o que está em processo paralelo com o char e outro sem char, nesse sem char coloca em tocar jogador, agora cria outro evento em processo paralelo que vai buscar as coordenadas da posição do que tem o char e mete definir posição do sem char as coordenadas que retirou anteriormente! Percebeu?


Podia ser mais específico quanto ao evento?

Harden

  • *
  • Posts: 163
  • Ouros: 145
  • Preciso pagar o aluguel
Resposta 2: 14/02/2016 às 13:01

A ideia é a seguinte:

Ao pressionar determinado botão o evento receberá dano, um monstro, no caso, mas caso o monstro toque o personagem, ele leva dano.
Porém o monstro pode receber dano apenas a X tiles do personagem. Sacou?
Your drill is the drill that will pierce the Heavens!

Lima

Resposta 3: 14/02/2016 às 13:18

Bem cara, você pode fazer deste género:



Agora só adicionar a condição se a posição do ator for igual ao atacar dá o dano xD

Lima

Resposta 4: 14/02/2016 às 13:36

Código: [Selecionar]
Game_Event.prototype.isLima = function() {
    var sx = Math.abs(this.deltaXFrom($gamePlayer.x));
    var sy = Math.abs(this.deltaYFrom($gamePlayer.y));
    return sx + sy < 2;
};
Coloque dentro de um plugin! Pode simplesmente abrir bloco de notas, e meter o nome.js, e marcar todos os tipos, depois é só adicionar ao projeto
Bem cara esse pequeno trecho de código pode ajudar! Ele basicamente verifica se o heroi está a 1 tile do mosntro, contudo o monstro pode estar a olhar para qualquer lado que ataca na mesma! Mas espero que ajuda!

Para funcionar é só preciso adicionar condição e Script e insere isto:
Código: [Selecionar]
$gameMap._events[3].isLima()
e dentro coloca a condição, experimente colocar mostrar mensagem

em vez de 3, deve ter o id do evento do monstro!

Harden

  • *
  • Posts: 163
  • Ouros: 145
  • Preciso pagar o aluguel
Resposta 5: 14/02/2016 às 14:31

Opa, vou testar esse plugin!

A questao eh uma habilidade onde o jogador empurra o monstro e tal, vou tentar trabalhar com isso!

Obrigado.
Your drill is the drill that will pierce the Heavens!

Lima

Resposta 6: 14/02/2016 às 14:39

Depois diga-me se funcionou e se quer mais alguma coisa xD

Harden

  • *
  • Posts: 163
  • Ouros: 145
  • Preciso pagar o aluguel
Resposta 7: 14/02/2016 às 22:24

Ok, funcionou perfeitamente.

Agora mais uma duvida: como o evento é em processo paralelo e eu preciso que o personagem leve dano, acaba que ele leva uma quantidade excessiva de dano.

Onde, neste evento, eu consigo encaixar o dano para que aconteça apenas uma vez por contato, ou algo assim.

Your drill is the drill that will pierce the Heavens!

Lima

Resposta 8: 15/02/2016 às 08:09

Depois de dar o dano, manda para uma switch local e mete novamente a condição ...isLima(), e em vez de meter logo a seguir à condição mete no else, e no else desativa a switch local, ou seja, e ele não estiver perto do personagem vai voltar a poder atacar, entendeu?

Harden

  • *
  • Posts: 163
  • Ouros: 145
  • Preciso pagar o aluguel
Resposta 9: 15/02/2016 às 15:04

Fiz um pouco diferente mas funcionou, acabou que voce me deu uma ideia pra usar e tal.

Ha a possibilidade de aumentar a distancia do plugin? Colocando algum numero depois do "$gameMap._events[3].isLima()"
Your drill is the drill that will pierce the Heavens!

Lima

Resposta 10: 15/02/2016 às 18:41

Código: [Selecionar]
Game_Event.prototype.isLima = function(dist) {
    var sx = Math.abs(this.deltaXFrom($gamePlayer.x));
    var sy = Math.abs(this.deltaYFrom($gamePlayer.y));
    return sx + sy < dist + 1;
};

agora passe o valor da distância dentro dos parênteses:

$gameMap._events[3].isLima(2)

Vai ter 2 tiles!
Isto em linguagem C funciona em js não experimentei, experimente e diga algo!


Harden

  • *
  • Posts: 163
  • Ouros: 145
  • Preciso pagar o aluguel
Resposta 11: 16/02/2016 às 11:27

Perfeito!

Podem trancar o topico ja s2
Your drill is the drill that will pierce the Heavens!

Gabriel

Resposta 12: 16/02/2016 às 12:18

Problema resolvido. :lock: