GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» Colisões não funcionando
por RastaMaan Ontem à(s) 19:49

» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Ontem à(s) 16:45

» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18

» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30

» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07

» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45

» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51

» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31

» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11

» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21


Tempo de espera entre ações

+4
Thyago
saim
Ritton
GustavoLC
8 participantes

Ir para baixo

Tempo de espera entre ações Empty Tempo de espera entre ações

Mensagem por GustavoLC Ter 06 Dez 2011, 15:24

Pessoal, estive estudando as funções do GML, porém aparentemente nenhuma cobre a espera de um tempo determinado até uma ação ser concluída.
Por exemplo, quero que um inimigo atire. A ação seria mais ou menos assim;

-Modifica o sprite do inimigo atirando.
-Espera um momento (2 segundos, por exemplo)
-Modifica o sprite do inimigo parado.

Existe alguma função que espere 2 segundos para depois continuar interpretando o código? Ou a única forma é através dos alarmes que, ao meu ver confunde muito na hora de escrever o código??

A função sleep() não é interessante, pq ela pára TUDO na tela e não é isso que eu quero. Eu queria uma função independente de alarmes, que simplesmente aguardasse 2 segundos até partir para a próxima linha. Alguém conhece a função para isso ou tem algum script pronto?? Desde já agradeço.

[Editado por saim]: Movido para a seção adequada
GustavoLC
GustavoLC

Data de inscrição : 20/11/2011
Reputação : 1
Número de Mensagens : 39
Prêmios : Tempo de espera entre ações Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Tempo de espera entre ações Empty Re: Tempo de espera entre ações

Mensagem por Ritton Ter 06 Dez 2011, 15:32

Acredito que a melhor maneira é os alarms que parecem ser complicado, mas acredite, são bem fáceis. Para se trabalhar com eles, primeiro crie um evento Alarm0 e defina o tempo de espera e depois no evento de ação, supomos que o clique do mouse, você insere esse tempo no código, marcando a transição entre as duas.

Desculpe pela explicação ruim é que estou ocupado e quase sem tempo de ver o que está acontecendo no fórum.

Até mais!
Ritton
Ritton

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 07/06/2011
Reputação : 2
Número de Mensagens : 673
Prêmios : Tempo de espera entre ações Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Tempo de espera entre ações Empty Re: Tempo de espera entre ações

Mensagem por saim Ter 06 Dez 2011, 17:31

Os alarms são scripts prontos.
Basicamente, o que acontece é o seguinte: você está colocando uma ação no step, mas você não quer que essa ação ocorra a todo e qualquer step. Você coloca uma CONDIÇÃO. If isso, then aquilo.
Enão você quer que a ação ocorra um TEMPO depois de uma outra. Você altera uma variável, como "tempoCorrendo" e joga uma outra, "countDown" pra, por exemplo, 20. Sempre que "tempoCorrendo" for true, "countDown" será subtraído de 1.
Quando "countDown" for igual a zero, aquela ação pode ocorrer. Quando "countDown" for igual a -1, "tempoCorrendo" passa a ser false.
Basicamente, é assim que os ALARMS funcionam, só que o game maker te traz tudo prontinho e embalado, só colocar no microondas e servir.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Tempo de espera entre ações Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Tempo de espera entre ações Empty Re: Tempo de espera entre ações

Mensagem por GustavoLC Ter 06 Dez 2011, 18:39

Pessoal, eu entendo a utilização dos alarmes, mas fica complicado quando você quer ações mais complexas, como um inimigo lançar um projétil, aguardar ele voltar e enquanto isso ficar esperando.
Seria muito mais fácil se houvesse por exemplo uma função tipo wait(300), que esperaria 300 passos para continuar...
GustavoLC
GustavoLC

Data de inscrição : 20/11/2011
Reputação : 1
Número de Mensagens : 39
Prêmios : Tempo de espera entre ações Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Tempo de espera entre ações Empty Re: Tempo de espera entre ações

Mensagem por Thyago Ter 06 Dez 2011, 19:22

.Na verdade alarms são estremamentes simples,mas indo ao pé da letra o
exemplo que você fez é muito simples.
ex:
create:
Código:
wait=0;
em strep:
Código:
 if(wait>0)
{
wait-=1;
}
if (wait=0)
{
executa seu codigo;
wait=300;
}
.Só um exemplo do que você disse que seria facil,se "tivesse"como fazer.
Thyago
Thyago

Games Ranking : Nota B

Notas recebidas : D+B+B+C+A
Data de inscrição : 24/08/2009
Reputação : 31
Número de Mensagens : 1101
Prêmios : Tempo de espera entre ações Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 1 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Tempo de espera entre ações Empty Re: Tempo de espera entre ações

Mensagem por GustavoLC Ter 06 Dez 2011, 22:04

Thyago escreveu: .Na verdade alarms são estremamentes simples,mas indo ao pé da letra o
exemplo que você fez é muito simples.
ex:
create:
Código:
wait=0;
em strep:
Código:
 if(wait>0)
{
wait-=1;
}
if (wait=0)
{
executa seu codigo;
wait=300;
}
.Só um exemplo do que você disse que seria facil,se "tivesse"como fazer.

Não, cara. wait() no step? Eu disse isso considerando que fosse uma função. Não tem jeito, já que deveria ser usado em diversos eventos de diversos objetos. É uma pena que não tenha no game maker. Estou adorando este programa, mas está é uma primeira falha. Até no RPG Maker que é bem mais simples tem...

GustavoLC
GustavoLC

Data de inscrição : 20/11/2011
Reputação : 1
Número de Mensagens : 39
Prêmios : Tempo de espera entre ações Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Tempo de espera entre ações Empty Re: Tempo de espera entre ações

Mensagem por gabrielsch Ter 06 Dez 2011, 23:06

GustavoLC escreveu:Pessoal, eu entendo a utilização dos alarmes, mas fica complicado quando você quer ações mais complexas, como um inimigo lançar um projétil, aguardar ele voltar e enquanto isso ficar esperando.
Seria muito mais fácil se houvesse por exemplo uma função tipo wait(300), que esperaria 300 passos para continuar...
Isso é muito fácil!
Além do mais, acho que tem as funções Trigger que se eu não me engano são mais ou menos como os Alarms...

Mas não há outra maneira mais facil de fazer o que tu quer fazer sem ser com Alarms, por exemplo:
GustavoLC escreveu:...mas fica complicado quando você quer ações mais complexas, como um inimigo lançar um projétil, aguardar ele voltar e enquanto isso ficar esperando...

Isso não é complexo, pelo menos para mim que ja tenho uma certa experiencia, estude bem os Alarms e vai ver como é super fácil utiliza-los da forma que você quer!
gabrielsch
gabrielsch

Games Ranking : Nota A

Notas recebidas : D + A + A
Data de inscrição : 06/12/2009
Reputação : 28
Número de Mensagens : 1230
Prêmios : Tempo de espera entre ações Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 2 Bronze x 0

Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Tempo de espera entre ações Empty Re: Tempo de espera entre ações

Mensagem por Limalokão Qua 07 Dez 2011, 02:21

https://gmbr.forumeiros.com/t5238-como-fazer-quando-o-player-atirar-esperar-2sec-para-atirar-denovo?highlight=2sec

Neste Tuto a amigo ensina o inimigo atirar a cada dois segundos! Ou seja Ele espera 2 segundos para executar a ação! Você tbm pode usar timeline que também tem uma função ótima para executar ações a cada certo tempo!! Flws
Limalokão
Limalokão

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 24/11/2009
Reputação : 10
Número de Mensagens : 805
Prêmios : Tempo de espera entre ações Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0


https://llgd.com.br

Ir para o topo Ir para baixo

Tempo de espera entre ações Empty Re: Tempo de espera entre ações

Mensagem por saim Qua 07 Dez 2011, 15:36

GustavoLC escreveu:Pessoal, eu entendo a utilização dos alarmes, mas fica complicado quando você quer ações mais complexas, como um inimigo lançar um projétil, aguardar ele voltar e enquanto isso ficar esperando.
Seria muito mais fácil se houvesse por exemplo uma função tipo wait(300), que esperaria 300 passos para continuar...
Espera um minuto... Você quer esperar o projétil voltar ou o tempo passar? Só existe uma forma de esperar o tempo passar: não fazendo nada durante esse tempo.
Pra não fazer nada, use uma variável e diga: se a variável for true, faça coisas, else, não faça nada.
Adivinha qual é a forma mais fácil de transformar uma variável de false pra true depois de um tempo determinado!
Não existe essa função "wait(tempo)" pra objetos , então você terá que usar essa estrutura de condicional.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Tempo de espera entre ações Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Tempo de espera entre ações Empty Re: Tempo de espera entre ações

Mensagem por GustavoLC Qua 07 Dez 2011, 21:19

É oseguinte, pessoal. Estou fazendo um remake de megaman e na criação de um dos bosses, me deparei com essa tal complexidade que cito. O resultado que eu gostaria eu consegui usando os alarmes, porém me pareceu gratuitamente complexo usar um alarme apenas para marcar tempo (ficar pulando de um evento pro outro). Sobre os triggers e timeline, confesso que nunca usei e nem sei direito como usar, mas vou estudar. Assim que meu jogo estiver mais organizado, eu posto aqui pra vcs darem uma olhada. Abraços a todos.
GustavoLC
GustavoLC

Data de inscrição : 20/11/2011
Reputação : 1
Número de Mensagens : 39
Prêmios : Tempo de espera entre ações Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Tempo de espera entre ações Empty Re: Tempo de espera entre ações

Mensagem por CRP-Max Qua 07 Dez 2011, 22:25

Só uma dica, caso você esteja fazendo ele em códigos:
No create do boss:
Código:
Boomerang=0 //só vai ser + quando ele jogar o boomerang

No evento atirar o boomerang.
Código:
boomerang=1

Na primeira linha do step do boss coloca um "if" assim:
Código:
if boomerang=0 {
//deixa todos os códigos, não mexa em nada do que já tem ok?
//..........
//..........
//..........
//cria mais uma linha no final e coloca assim
}
else {
if boomerang=300 {boomerang=0}
else
{
boomerang+=1}}
Quando jogar o boomerang, nada que tiver no step vai funcionar ate que boomerang seja "0" de novo:

Riscos:
1º veja se as funções de gravidade ou outras de controle do jogo não estejam no meio do código pois elas vão ficar paradas ate boomerang ser "0".
2º caso as funções de movimento do boss estejam em eventos separados eles irão funcionar, tem que colocar o "if" la também mas não coloque a linha final inteira só esse "}"

Esse também é um jeito de parar um personagem apenas, deixando o resto do jogo rodar normalmente.

Caso seja para o player, pode usar, mas corre-se o risco de alguma função parar de funcionar.
Se você fez todos os códigos vai conseguir arruma tudo.
pirat
CRP-Max
CRP-Max

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 28/10/2008
Reputação : 29
Número de Mensagens : 822
Prêmios : Tempo de espera entre ações Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Tempo de espera entre ações Empty Re: Tempo de espera entre ações

Mensagem por GustavoLC Qua 07 Dez 2011, 23:38

Crp, não tem como eu testar agora, mas acho que isso travaria o jogo. Digo isso porque ontem desenvolvi uma ideia que na hora de programar não deu certo. A ideia era o seguinte: criar um script chamado scr_wait().

No Evento Create do objeto, eu declaro a variável v_time como zero e a variável v_ontimer=0(timer desligado)

No evento End Step (pq no Step já tinha outras coisas), eu coloquei um if do tipo:

Se v_ontimer=1{v_time+=1} Se o temporizador estiver ligado, a cada fim de passo, a variável v_time é incrementada em 1.

E finalmente no script, havia o código:
v_time=0;
v_ontimer=1; //para ligar o temporizador
while v_time!=300 {} //não faz nada, mas pára tudo enquanto não se passar os 300 endsteps para incrementar a vairável v_time...

Não sei se ficou claro, não estou no meu computador, mas o importante é que parou TUDO, como se eu tivesse utilizado a função sleep(300)... Não foi dessa vez.

Sobre a utilização dos alarmes, volto a dizer que elas resolvem os problemas, mas no final das contas deixa a programação um pouco confusa. Veja só, no meu boss, ele possui 4 ações distintas: usei quase todos os alarmes para que fossem feitas de forma eficiente, sendo que alguns eram meramente para mudar o sprite e velocidade de animação...
Acaba que fica complicado, pois o alarme 1, 2 e 8 estão linkados, depois o 3,4,10...mas só isso mesmo.
GustavoLC
GustavoLC

Data de inscrição : 20/11/2011
Reputação : 1
Número de Mensagens : 39
Prêmios : Tempo de espera entre ações Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Tempo de espera entre ações Empty Re: Tempo de espera entre ações

Mensagem por saim Qui 08 Dez 2011, 00:35

Vou te explicar porque travou. Você usou um while infinito.
v_time era zero. Enquanto v_time fosse diferente de 300, o computador seguiria executando aquela ação (nenhuma), até que v_time fosse 300. Isso nunca iria acontecer, então você ficou travado naquele step.
Não foi nada parecido com a função sleep, que segura o jogo (só o jogo, não o computador inteiro) por um tempo DETERMINADO.

O que você QUASE fez foi um alarm não-built-in, ou seja, você chegou perto de elaborar seu próprio alarm. É uma alternativa, pro caso de acabarem os alarms.

Agora, um erro dessa sua lógica foi achar que ao colocar uma ação nula sob determinada condição o objeto cessaria de executar as outras ações. Faça o teste: repita sua lógica, mas troque o while por um if. Você nem notará que o if está lá, porque ele não faz nada.

Não estou escrevendo pra criticar. É que esse raciocínio pode ser fatal e se você não entender onde errou, pode ter problemas bem sérios ao tentar códigos mais complexos.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Tempo de espera entre ações Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Tempo de espera entre ações Empty Re: Tempo de espera entre ações

Mensagem por CRP-Max Sex 09 Dez 2011, 15:28

Só pra complementar a diferença do while e do if:

while, ele é um loop que para o todo o programa enquanto seu valor for verdadeiro, parecendo um "sleep".

if, caso o seu valor seja falso, ele continua executando todos os comandos menos os que estão dentro dos "{}".

Essa é a diferença entre meu código e o seu, caso o meu esteja errado o único que vai parar é o objeto que estiver usando o if, os outros vão continuar sendo executados.
CRP-Max
CRP-Max

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 28/10/2008
Reputação : 29
Número de Mensagens : 822
Prêmios : Tempo de espera entre ações Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Tempo de espera entre ações Empty Re: Tempo de espera entre ações

Mensagem por GustavoLC Sex 09 Dez 2011, 19:08

Saim, perceba que no evento End Step, a variável v_time é incrementada em 1. O meu raciocínio foi que enquanto o while infinito estivesse acontecendo, a variável fosse continuamente incrementada, até passar 300 passos. Nesse momento, ela interromperia o loop, nos exatos 300 passos, conforme eu havia planejado.

CRP-Max, se for assim, vou testar o raciocínio usando if. Não sabia dessa particularidade do while (que ele pára tudo o que está acontecendo)...
GustavoLC
GustavoLC

Data de inscrição : 20/11/2011
Reputação : 1
Número de Mensagens : 39
Prêmios : Tempo de espera entre ações Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Tempo de espera entre ações Empty Re: Tempo de espera entre ações

Mensagem por GustavoLC Sex 09 Dez 2011, 19:59

Procurei nos fóruns estrangeiros e o pessoal sempre diz a mesma coisa, que o uso de alarmes não é complicado. Assim sendo, vou tentar ilustrar a facilidade que seria uma função wait().

Pra começar, a função funcionaria da seguinte forma:

Por exemplo, Wait(300): o evento pausará por 300 passos antes de realizar a próxima ação. Entendido? Agora o exemplo:

Eu quero um inimigo que tenha 2 ataques e o primeiro ataque será feito após 300 passos de sua criação. Findado este tempo, será escolhido aleatoriamente o ataque. Contudo, o ataque do primeiro projétil deve acionar uma animação que dura 24 steps e o segundo ataque, uma animação que dura 12 steps.

Como isso é feito atualmente no GM, segue abaixo:

=============
Ev Create:
image_speed=0;
alarm[0]=300;
=============
Alarm0
action=irandom_range(1,2)

if action=1
{
sprite_index= spr_lançando_projetil;
image_speed=1;
alarm[1]=24;
}

if action=2
{
sprite_index= spr_lançando projetil2;
image_speed=1;
alarm[2]=12;
============
Alarm1
instance_create(10,10,obj_projetil);
sprite_index=spr_inimigo_parado;
image_speed=0;
alarm[0]=300;
==================
Alarm2
instance_create(10,10,obj_projetil2);
sprite_index=spr_inimigo_parado;
image_speed=0;
alarm[0]=300;
===========

Percebam que a função do alarm0 cuida apenas da escolha do projétil e, dependendo do projétil, aciona alarmes diferentes para executar. No total, são utilizados 3 alarmes para tudo, onde para cada ação, é necessário a utilização de 1 alarme. Assim, se o inimigo tivesse 5 ataques, usaria 6 alarmes.

Agora, como ficaria o mesmo código se houvesse algo similar à função wait:

========
Ev Create:
image_speed=0;
alarm[0]=300;
========
Alarm0:
action=irandom_range(1,2)

if action=1
{
sprite_index= spr_lançando_projetil;
image_speed=1;
wait(24);
instance_create(10,10,obj_projetil);
sprite_index=spr_inimigo_parado;
image_speed=0;
alarm[1]=300;
}

if action=2
{
sprite_index= spr_lançando projetil2;
image_speed=1;
wait(12);
instance_create(10,10,obj_projetil2);
sprite_index=spr_inimigo_parado;
image_speed=0;
alarm[1]=300;
==============
Alarm1:
alarm[0]=300;
==============

Os dois ataques são definidos diretamente no Alarm0, sendo que o Alarm1 funciona exclusivamente como carregador do gatilho do Alarm0. Desta forma, são usados apenas 2 alarmes. E se o inimigo tivesse 5 golpes similares ao lançamento de projétil? Continuaríamos usando 2 alarmes, pois toda a ação seria feita dentro do Alarm0, independente se haveria animação ou não.

Antes que alguém diga que 5 ataques para um mesmo inimigo é exagerado ou que mesmo assim, há 12 alarmes para serem usados, é preciso dizer que o exemplo que dei é bem simples e foi utilizado apenas para ilustrar o meu raciocínio. Na prática, outros alarmes seriam utilizados para fazer outras ações como verificar pontos de saúde, recarregar variáveis,etc.

A função wait(), deixaria a escrita do código bem mais fácil de ser estudada e interpretada. não concordam?

GustavoLC
GustavoLC

Data de inscrição : 20/11/2011
Reputação : 1
Número de Mensagens : 39
Prêmios : Tempo de espera entre ações Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Tempo de espera entre ações Empty Re: Tempo de espera entre ações

Mensagem por luiz_eldorado Sex 09 Dez 2011, 20:46

O que você poderia fazer é um script chamado wait (claro), mas o que ele faria seria criar um objeto que faça tais ações. Vamos ver, como se fosse:
Código:

//wait(steps,acao)
var obj;
obj=object_add()
object_event_add(obj,ev_create,0,"alarm[0]="+string(argument0))
object_event_add(obj,ev_alarm,0,argument1+"
instance_destroy()
object_delete(obj)")
Algo assim. Porém, eu não testei e fiz de cabeça. O problema é que todas as ações que serão adicionadas depois do wait teriam que ser colocadas dentro de um argumento do script em forma de string.

Até mais!
luiz_eldorado
luiz_eldorado

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 30/07/2011
Reputação : 47
Número de Mensagens : 928
Prêmios : Tempo de espera entre ações Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://luizpontes.tk/

Ir para o topo Ir para baixo

Tempo de espera entre ações Empty Re: Tempo de espera entre ações

Mensagem por GustavoLC Sex 09 Dez 2011, 21:49

luiz, também pensei em algo do tipo, criar um objeto, mas mesmo assim seria complicado. É uma pena não ter a função wait ou algo similar a ela, facilitaria muitooo!
GustavoLC
GustavoLC

Data de inscrição : 20/11/2011
Reputação : 1
Número de Mensagens : 39
Prêmios : Tempo de espera entre ações Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Tempo de espera entre ações Empty Re: Tempo de espera entre ações

Mensagem por saim Sex 09 Dez 2011, 23:20

Você só quer que ele espere pelo tempo da animação? Ora, já ouviu falar no evento animation_end? Está lá na guia "other". Coloque, nesse evento:
Código:
switch(action){
  case 1: //faz o que você colocou no alarm1; break;
  case 2: //faz o que você colocou no alarm2; break;
  //etc
  }
Ou, melhor ainda, se for só criação de projéteis diferentes, armazene as informações em arrays cuidadosamente preparadas e, nessa hora... nesse evento... lasque isso aqui:
Código:
instance_create(x, y, obj_projetol[action];
alarm[0] = 300;
E, no alarm[0],
Código:
action = irandom_range(1, número de ações);
sprite_index= spr_lançando projetil[action]

Edit:
Saim, perceba que no evento End Step, a variável v_time é incrementada em 1. O meu raciocínio foi que enquanto o while infinito estivesse acontecendo, a variável fosse continuamente incrementada, até passar 300 passos. Nesse momento, ela interromperia o loop, nos exatos 300 passos, conforme eu havia planejado.
É aí que está um erro de lógica que eu levei semanas pra entender, quando comecei a programar. O while INTEIRO acontece num step só. Aliás, não é num step, é naquele conjunto de linhas do evento. Veja esse exmplo:
Código:
i=0;
while(i!=1){ //enquanto i não for 1
i=random(2)
}
Esse é um exemplo que VAI travar seu computador, portanto não teste. No começo do código, i = 0, então ao entrar no while, a condição de saída não será satisfeita.
Aí, o computador vai jogando valores aleatórios entre 0 e 2. Quando o valor 1 EXATO for lançado, a condição será satisfeita e o programa seguirá executando as linhas seguintes. Só que vai levar muito tempo pro random retornar exatamente 1. "Muito tempo" pode ser 5 minutos ou uma semana.

Existem outros loops passivos de trancar seu computador. Exemplos:
Código:
for(i=0;i<5;i+=1){
i-=1
}
Código:
do{i=0}until(i=1)
Código:
for(i=0;i<5;i+=1){
if i>=5
continue
}
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Tempo de espera entre ações Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Tempo de espera entre ações Empty Re: Tempo de espera entre ações

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos