Conectar-se
Quem está conectado
34 usuários online :: 1 usuário cadastrado, Nenhum Invisível e 33 Visitantes

gart30

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Data de inscrição : 06/10/2013
Número de Mensagens : 76
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

ajuda nalgumas questôes

em Ter 08 Out 2013, 09:46
Boa tarde a todos, comecei a usar recentemente o game maker e para começar um mini jogo fácil e pequeno.

estou entusiasmado com o gm mas eis que começo a perceber que pequeninos problemas são os mais difíceis de resolver levando-me ao desespero, mas desespero mesmo. Eis as minhas questões:

1- quando o carro bate (colisão) no meu personagem, este vira cadáver ensaguentado, daí dispara um timer que reinicia o jogo passado algum tempo, até aqui tudo bem só que o mais fácil não consigo fazer, quero que tudo pare durante o tempo (timer) senão podemos mover o cadáver e o resto dos objetos continuam a mover. apenas queria um sleep(numb) (que ao que parece já não existe), não quero menu pause nem (tudo invisivel) apenas um "frezze".

será tão dificil fazer esta coisa tão basica??? como se faz?

2-porque será que nenhuma das randomizações funciona comigo??? uso,exemplo:

random_range(5,10) --- o resultado não funciona com minimo 5 e alem disso dá resultados

esquisitos tipo 6'9889 (o que não era suposto por ser (random_range)(penso eu)

ou tipo:

global.velocidade3=floor( random( 7) )+3 ---reparem que aqui sou obrigado a somar 3 porque quero minimo de 3
object_faisca_esquerda_1.speed=global.velocidade3 ---numero randomizado na variavel

queria de 3 a 7 mas se o resultado for 7 já sabem o que acontece, soma mais três e dá 10.
támbem já usei :

global.velocidade3=floor( random( 3-7) )

mas também dá números que não são de 3 a 7

o que realmente queria era uma randomização com numero minimo e máximo, exemplo numero entre 5 e 10, tão simples quanto isso.

obrigado pela vossa atenção e possível ajuda prestada.

avatar
Ranking : Nota B
Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Número de Mensagens : 2490
Insígnias de JAM :

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

Prêmios
   : 0
   : 2
   : 1
Ver perfil do usuáriohttp://xcreatorgames.weebly.com/

Re: ajuda nalgumas questôes

em Ter 08 Out 2013, 10:37
Amigo, basta trocar o random_range() por irandom_range() que voce obterá valores inteiros.
Flws!
avatar
Data de inscrição : 06/10/2013
Número de Mensagens : 76
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

Re: ajuda nalgumas questôes

em Ter 08 Out 2013, 10:45
Não funciona:

In object object_faisca_esquerda_2, event Create, action 2 at line 1: Unknown function or script: Irandom_range
avatar
Ranking : Nota B
Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Número de Mensagens : 2490
Insígnias de JAM :

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

Prêmios
   : 0
   : 2
   : 1
Ver perfil do usuáriohttp://xcreatorgames.weebly.com/

Re: ajuda nalgumas questôes

em Ter 08 Out 2013, 10:50
@jose rocha escreveu:Não funciona:

In object object_faisca_esquerda_2, event Create, action 2 at line 1: Unknown function or script: Irandom_range
O GM é case sensitive ou seja distingue maiuscula de minuscula. Arrume o "I" e coloque em minúsculo.
Ou você pode usar o round() assim:
Código:

r = round(random_range(1, 10));
Flws!
avatar
Data de inscrição : 06/10/2013
Número de Mensagens : 76
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

Re: ajuda nalgumas questôes

em Ter 08 Out 2013, 11:02
Ou você pode usar o round() assim:
CÓDIGO:

r = round(random_range(1, 10));
de facto funciona mas continua a dar mal. Exemplo fiz:

r = round(random_range(10, 20))
global.velocidade4= r ---(para poder ver a variável no debug)

 e ele chega a dar valores de 3 e 6

lol
avatar
Ranking : Nota B
Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Número de Mensagens : 2490
Insígnias de JAM :

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

Prêmios
   : 0
   : 2
   : 1
Ver perfil do usuáriohttp://xcreatorgames.weebly.com/

Re: ajuda nalgumas questôes

em Ter 08 Out 2013, 11:07
Com certeza ele vai dar valores entre 10 e 20, não sei como está o seu código mas acho que essa variavel pode estar sendo alterada em outro local, tente colocar mais código de debug.
Flws!
avatar
Data de inscrição : 06/10/2013
Número de Mensagens : 76
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

Re: ajuda nalgumas questôes

em Ter 08 Out 2013, 13:15
Com certeza ele vai dar valores entre 10 e 20, não sei como está o seu código mas acho que essa variavel pode estar sendo alterada em outro local, tente colocar mais código de debug.
Flws!
de facto estava a ser alterada, já fiz uns testes e agora funciona SIM.
muito obrigado vinians  e já agora aproveito parar perguntar (curiosidade) o porquê a palavra round no código.

para outros membros por favor me digam se souberem alguma maneira de fazer o frezze (parar tudo sem ficar os objetos invisíveis).
avatar
Ranking : Nota A
Notas recebidas : A
Data de inscrição : 09/03/2010
Número de Mensagens : 1035
Insígnias de JAM :

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

Prêmios
   : 2
   : 1
   : 1
Ver perfil do usuáriohttp://www.www.ww.www

Re: ajuda nalgumas questôes

em Ter 08 Out 2013, 19:05
O round seria para arredondar o numero real que o random_range retorna para o inteiro mais proximo.

O que tu pode fazer para essa parte de congelar a tela, seria criar uma variável global que controla o movimento de todo o jogo. Por exemplo, tu cria uma variavel chamada movimento=true no create de algum objeto, seria um objeto controlador no caso, em todos os outros objetos qualquer ação que fosse ser executada só seria permitida caso essa variável fosse verdadeira, sempre checando ela antes de qualquer ação, quando acontecesse a ação de congelar a tela, essa variável se tornaria false o que impediria todo e qualquer movimento dos objetos.
É um jeito bem trabalhoso, mas talvez mais flexivel.
Se não me engano existe o sleep(x) só que não esqueça que o GM trabalha com milissegundos.
Abraço!
avatar
Data de inscrição : 06/10/2013
Número de Mensagens : 76
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

Re: ajuda nalgumas questôes

em Ter 08 Out 2013, 20:48
O round seria para arredondar o numero real que o random_range retorna para o inteiro mais proximo.

O que tu pode fazer para essa parte de congelar a tela, seria criar uma variável global que controla o movimento de todo o jogo. Por exemplo, tu cria uma variavel chamada movimento=true no create de algum objeto, seria um objeto controlador no caso, em todos os outros objetos qualquer ação que fosse ser executada só seria permitida caso essa variável fosse verdadeira, sempre checando ela antes de qualquer ação, quando acontecesse a ação de congelar a tela, essa variável se tornaria false o que impediria todo e qualquer movimento dos objetos.
É um jeito bem trabalhoso, mas talvez mais flexivel.
Se não me engano existe o sleep(x) só que não esqueça que o GM trabalha com milissegundos.
Abraço!
ok, já tinha imaginado que essa seria a unica opção, mas para isso precisava do código de mover objectos, do tipo:
o meu personagem move-se através do tal evento:
jump to position (-4,0) -----este evento não é codigo (mas sim evento do gm),por isso  peço o codigo para usar variavel.
e por aí vai

up jump to position 0,-4    etc...

é o mod mover para todos os lados incluindo diagonal em sprite fixo (ou seja não movimento do tipo jogo super mario).

por favor mê dê o código porque assim que o tiver faço qualquer coisa do tipo:

(funcionam ou movem-se se variavel X for true)


obrigado.

EDIT: coisas á parte, eu não me acredito que o game maker me acabou de limitar por uma coisa de nada, ( o caso de frezze não ser possível). Á alguma maneira de inserir linguagem codigo c+  para fazer esse tal frezze ou slleep?? (lembrando que, (sleep) "também não existe mais da versão 8 para cima"??
avatar
Data de inscrição : 14/09/2013
Número de Mensagens : 48
Insígnias de JAM :

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

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: ajuda nalgumas questôes

em Ter 08 Out 2013, 21:03
para congelar de um geito facil uso o (sleep, 1000=1 segundo). segundo icone da aba 3 (main2). coloca ele no envento colisão logo depois de ele virar cadaver...
avatar
Data de inscrição : 06/10/2013
Número de Mensagens : 76
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

Re: ajuda nalgumas questôes

em Ter 08 Out 2013, 21:11
tomxope, desculpe se não entendi bem, faça um codigo (exemplo para entender melhor).

obrigado,

EDIT: como já disse, já não existe:

na aba 3 segundo icone tenho: "set time line position to 0".
avatar
Data de inscrição : 14/09/2013
Número de Mensagens : 48
Insígnias de JAM :

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

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: ajuda nalgumas questôes

em Ter 08 Out 2013, 21:24
sleep(numb). desculpa la!!! eu uso a versão 8!!! vi agora no gms.. nao tem mesmo. a melhor forma sera mesmo usar um objecto control!!!
avatar
Data de inscrição : 06/10/2013
Número de Mensagens : 76
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

Re: ajuda nalgumas questôes

em Ter 08 Out 2013, 21:28
sleep(numb). desculpa la!!! eu uso a versão 8!!! vi agora no gms.. nao tem mesmo. a melhor forma sera mesmo usar um objecto control!!!
ok ok, como se usa isso ?
lol
avatar
Data de inscrição : 10/07/2013
Número de Mensagens : 49
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

Re: ajuda nalgumas questôes

em Ter 08 Out 2013, 21:38
Não seria mais fácil simplesmente não executar códigos que são executados com a input do teclado? Tipo, só usar uma variável que fica true quando o player morre, e no evento keyboard (Ou nas funções keyboard_) checar também se essa variável é false, se for aí sim irá executar o código. Aí o player não move mais (Todos os outros objetos iriam, no caso).

Seria até legal um fade-in com o carro ainda se movimentando e tudo mais, em vez de congelar a tela ;)
avatar
Data de inscrição : 06/10/2013
Número de Mensagens : 76
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

Re: ajuda nalgumas questôes

em Ter 08 Out 2013, 21:49

Não seria mais fácil simplesmente não executar códigos que são executados com a input do teclado? Tipo, só usar uma variável que fica true quando o player morre, e no evento keyboard (Ou nas funções keyboard_) checar também se essa variável é false, se for aí sim irá executar o código. Aí o player não move mais (Todos os outros objetos iriam, no caso).

Seria até legal um fade-in com o carro ainda se movimentando e tudo mais, em vez de congelar a tela ;)

com certeza, era isso mesmo que eu queria e entendi, mas preciso de inserir a variável nas funções keyboard e para isso tem que ser através de código e não evento.

ps. se alguém me quer ajudar mas não esta a entender a minha duvida ou respoistas, pf diga o que não entende para eu explicar melhor.
avatar
Data de inscrição : 10/07/2013
Número de Mensagens : 49
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

Re: ajuda nalgumas questôes

em Ter 08 Out 2013, 22:00
@jose rocha escreveu:

Não seria mais fácil simplesmente não executar códigos que são executados com a input do teclado? Tipo, só usar uma variável que fica true quando o player morre, e no evento keyboard (Ou nas funções keyboard_) checar também se essa variável é false, se for aí sim irá executar o código. Aí o player não move mais (Todos os outros objetos iriam, no caso).

Seria até legal um fade-in com o carro ainda se movimentando e tudo mais, em vez de congelar a tela ;)
com certeza, era isso mesmo que eu queria e entendi, mas preciso de inserir a variável nas funções keyboard e para isso tem que ser através de código e não evento.

ps. se alguém me quer ajudar mas não esta a entender a minha duvida ou respoistas, pf diga o que não entende para eu explicar melhor.
Dá para fazer isso(O código não tá correto, é só pra ilustrar Razz) :

Código:
if vivo = true {
  if keyboard_check(tecla) {
    //faz coisas
  }
 
  if keyboard_check(outraTecla) {
    //faz outras coisas
  end
}
ou até no evento key pressed (ou released etc..) :

Código:
if vivo = true {
  //faz coisas
}
Daria no mesmo.

Nesse caso ele só iria se mover se estivesse vivo.
avatar
Data de inscrição : 06/10/2013
Número de Mensagens : 76
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

Re: ajuda nalgumas questôes

em Qua 09 Out 2013, 21:33
mZIl :

testado e aprovado.

muito obrigado a todos pela ajuda.

tudo resolvido.Very Happy 
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum