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
» 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

» Como ajustar velocidade de cada frame da animação no game maker
por Ralphed Qui 18 Abr 2024, 18:28

» 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

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39


Erro no script atirar (creat_instance())

2 participantes

Ir para baixo

Erro no script atirar (creat_instance()) Empty Erro no script atirar (creat_instance())

Mensagem por FMP Dom 06 Jun 2010, 01:22

Meu personagem não atira, quando está abaixado, na direção que eu quero. Ele pega os valores para quando ele estiver em pé.
Aqui vai o script para o botão SPACE

atirando=true
if position=0&&tiro=1
{if correndo=false&&atirando=true&&parado=false&&agaixado=false&&aimup=false
var obj;
obj=instance_create(samus.x+73,samus.y-30,powershotright);
with (obj) motion_set(0,28);tiro=0; alarm[0]=4}
else
if position=180&&tiro=1
{if correndo=false&&atirando=true&&parado=false&&agaixado=false&&aimup=false
var obj;
obj=instance_create(samus.x-69,samus.y-25,powershotleft);
with (obj) motion_set(180,28);tiro=0; alarm[0]=4}
else
if position=0
{if agaixado=true&&atirando=true&&correndo=false&&aimup=false
var obj;
obj=instance_create(samus.x+500,samus.y+500,powershotright2);
with (obj) motion_set(0,4);}
else
if position=180&&tiro=1
{if agaixado=true&&atirando=true&&correndo=false&&aimup=false
var obj;
obj=instance_create(samus.x,samus.y,powershotleft2);
with (obj) motion_set(180,4);tiro=0; alarm[0]=4}
else
if position=0&&tiro=1
{if correndo=false&&agaixado=false&&atirando=true&&aimup=true
var obj;
obj=instance_create(samus.x,samus.y+50,powershotup);
with (obj) motion_set(90,28);tiro=0; alarm[0]=4}


ate criei um tiro diferente(powershotleft2/right2), mas não fez diferença alguma. Não importa os valores que eu ponha para direção e velocidade, o GM só está considerando os valores onde o personagem está em pé(os dois primeiros). Até se tento atirar em pe(última linha) aconteçe a msm coisa, o tiro segue para a direita ou esquerda dependendo do lado para que eu estiver virado. Pareçe ser uma coisa boba, mas estou quebrando a cabeça des de cedo! Por favor me ajudem!
FMP
FMP

Data de inscrição : 04/05/2010
Reputação : 0
Número de Mensagens : 24
Prêmios : Erro no script atirar (creat_instance()) 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

Erro no script atirar (creat_instance()) Empty Re: Erro no script atirar (creat_instance())

Mensagem por Convidad Dom 06 Jun 2010, 20:50

Acho que há uso excessivo de "else" no código, o que pode estar fazendo o script não funcionar direito. Perceba que há linhas que o próprio else é desnecessário, já que você usou "if" com a condição do próprio "else".

Tente remontar, só que dessa vez, use o método de identação como se fosse uma árvore:

Código:
atirando = true;

if position = 0 && tiro=1
{
   if correndo = false && atirando = true && parado = false
        {
      if agaixado = false
                {
      // Cria o tiro agaixado
                }
                else
                {
      //Cria o tiro de pé.
                }

        }
}

Isso vai te ajudar muito a organizar e não se perder. É só uma dica.
avatar
Convidad
Convidado


Ir para o topo Ir para baixo

Erro no script atirar (creat_instance()) Empty Re: Erro no script atirar (creat_instance())

Mensagem por FMP Seg 07 Jun 2010, 02:36

É verdade. Mas no help do GM8 não vem falando que isso poderia me causar problemas, pensei que poderia usar infintos "else" e tudo ficaria bem do msm jeito.No caso eu estou usando if em função de else, vc quer dizer que devo usar o contrário, else em função de if? Pensei que desse no msm...
Vou reescrever desse modo, ele realmente é mais simples de "olhar"!
Valeu pela ajuda. Caso de pau aqui, posto a minha nova tentativa frustrada de novo! O.o
FMP
FMP

Data de inscrição : 04/05/2010
Reputação : 0
Número de Mensagens : 24
Prêmios : Erro no script atirar (creat_instance()) 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

Erro no script atirar (creat_instance()) Empty Re: Erro no script atirar (creat_instance())

Mensagem por Convidad Seg 07 Jun 2010, 07:23

A questão do else, o que eu quis dizer é que, se você usa um else na condição "if agaixado = true", então não é necessário digitar após o else "if agaixado = false". Também não precisa digitar else em toda condição, só nas que forem necessárias.

O else quer dizer "caso contrário", ele só nos poupa de digitar uma outra condição "if" contrária à condição em questão.

Agora, vamos ao problema... você disse que o personagem, mesmo agaixado, pega os valores quando está de pé. O que quiz dizer é que pode ser que no meio dos "else's", a lógica estivesse "pulando" alguma coisa, ou o código estivesse errado. A exemplo da identação, esse código é o mesmo, porém da forma que eu falei:

Acredito que agora não vai haver problemas, se houver, poste aqui uma mensagem pra gente te ajudar.

Código:
if tiro <> 1 || correndo <> false || parado <> false exit;

atirando = true;
tiro = 0;
alarm[0] = 4;
var obj;

switch (position)
{
   case (0):
      if aimup = false
      {
         if agaixado = false
         {
            obj = instance_create(samus.x + 73, samus.y - 30, powershotright);
            with (obj) motion_set(0,28);

         }
         else
         {
            obj = instance_create(samus.x + 500,samus.y + 500, powershotright2);
            with (obj) motion_set(0,4);
         }
      }
      else
      {
         if agaixado = false
         {
            obj=instance_create(samus.x,samus.y+50,powershotup);
            with (obj) motion_set(90,28);
         }
      }
   break;

   case (180):
      if aimup = false
      {
         if agaixado = false
         {
            obj=instance_create(samus.x - 69, samus.y - 25, powershotleft);
            with (obj) motion_set(180,28);
         }
         else
         {
            obj=instance_create(samus.x,samus.y,powershotleft2);
            with (obj) motion_set(180,4);
         }
      }
   break;
}

----- Editado -----

Você também pode fazer upload do projeto pra galera tentar te ajudar se der algum problema, se preferir pode zipar com senha e mandar por mensagem particular (se não quiser disponibilizar o projeto). Mas normalmente essa é a melhor forma, pois a gente varre o código em busca do erro (pode ser que nem esteja nesse script), ou ajuda a melhorar o mecanismo.

Boa sorte aí! Abraços.
avatar
Convidad
Convidado


Ir para o topo Ir para baixo

Erro no script atirar (creat_instance()) Empty Re: Erro no script atirar (creat_instance())

Mensagem por giosepeluiz Seg 07 Jun 2010, 14:30

Olá FMP...
- Use parênteses para separar condições
- Use == (dois iguais) para comparar
- Use identação para deixar o código organizado

Lembrando que há um ELSE para cada IF... Exemplo:

Código:
if ([condição]){
   if ([condição2]){
      [execução]
   } else {
      if ([condição3]){
      [execução2]
      }
   }
} else {
   [execução4]
}

Coloque o arquivo *.GMK aqui ou explique-nos as variáveis, para que possamos analisar melhor, pois por código não podemos saber exatamente o que ocorre...
giosepeluiz
giosepeluiz

Data de inscrição : 21/05/2010
Reputação : 1
Número de Mensagens : 110
Prêmios : Erro no script atirar (creat_instance()) 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

http://www.orkut.com.br/Main#Profile?uid=12612551030963156921

Ir para o topo Ir para baixo

Erro no script atirar (creat_instance()) Empty Re: Erro no script atirar (creat_instance())

Mensagem por FMP Ter 08 Jun 2010, 01:56

Valeu pela ajuda de vcs dois. Vou tentar somar ambas as informações e tenar formular um metodo menos confuso para o que eu quero fazer aqui, caso não dê certo eu posto o .GMK para vcs verem melhor o problema. Até!
Obs: Caso eu use else para indicar a mudança de posição, ele vai reconheçer as três posições básicas?
ex


if position=180
{//executa qualquer coisa}
else
{//executa qualquer coisa na position=0}
else
{//executa qualquer coisa na position=90(que seria mirando para cima, nesse caso)}
Isso é possível?( Contando que eu declare as variáveis no event create antes)
EDIT: Tentei e modifiquei algumas coisa aqui, mas agora o personagem quando está virado para a esquerda e pressiono para baixo ele fica abixado para a direita, e os tiros dados quando virado para esquerda agora copiam a direção e velocidade dos para a esquerda. Vou postar aqui meu .GMK e por favor alguém me dê uma luz nesse túnel...
FMP
FMP

Data de inscrição : 04/05/2010
Reputação : 0
Número de Mensagens : 24
Prêmios : Erro no script atirar (creat_instance()) 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

Erro no script atirar (creat_instance()) Empty Re: Erro no script atirar (creat_instance())

Mensagem por giosepeluiz Ter 08 Jun 2010, 14:10

FMP escreveu:Valeu pela ajuda de vcs dois. Vou tentar somar ambas as informações e tenar formular um metodo menos confuso para o que eu quero fazer aqui, caso não dê certo eu posto o .GMK para vcs verem melhor o problema. Até!
Obs: Caso eu use else para indicar a mudança de posição, ele vai reconheçer as três posições básicas?
ex


if position=180
{//executa qualquer coisa}
else
{//executa qualquer coisa na position=0}
else
{//executa qualquer coisa na position=90(que seria mirando para cima, nesse caso)}
Isso é possível?( Contando que eu declare as variáveis no event create antes)
EDIT: Tentei e modifiquei algumas coisa aqui, mas agora o personagem quando está virado para a esquerda e pressiono para baixo ele fica abixado para a direita, e os tiros dados quando virado para esquerda agora copiam a direção e velocidade dos para a esquerda. Vou postar aqui meu .GMK e por favor alguém me dê uma luz nesse túnel...

Olá... Isso não pode... Porque, é VERDADEIRO ou FALSO, não há meio termo... Mas você pode usar 2 ifs (ou mais), exemplo:

Código:
if (position == 180)
{//executa qualquer coisa}
    else{
        if (position == 0)
        {//executa qualquer coisa na position=0}
            else{
                if (position == 90)             
            {//executa qualquer coisa na position=90(que seria mirando para cima, nesse caso)}
  }
}


Ou ainda:

Código:
if (position == 180)
{//executa qualquer coisa}

if (position == 0)
{//executa qualquer coisa na position=0}

if (position == 90)             
{//executa qualquer coisa na position=90(que seria mirando para cima, nesse caso)}

Tente aí, qualquer duvida, nos avise...
giosepeluiz
giosepeluiz

Data de inscrição : 21/05/2010
Reputação : 1
Número de Mensagens : 110
Prêmios : Erro no script atirar (creat_instance()) 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

http://www.orkut.com.br/Main#Profile?uid=12612551030963156921

Ir para o topo Ir para baixo

Erro no script atirar (creat_instance()) Empty Re: Erro no script atirar (creat_instance())

Mensagem por FMP Ter 08 Jun 2010, 15:38

Reparei uma coisa. Pq vc só usa comparação (==) ao invès de igualdade(=) na hora de estipular alguma variável? Tentei usar o else dentro da condição if, mas depois de algumas linhas começou anão reconheçer mais, por algum motivo.Vou mostrar:

Evento CREATE do personagem:

parado=false
pulando=false
morphmode=false
correndo=false
atirando=false
left=180
right=0
position=0
screwattack=false
agaixado=false
aimup=false
aimdiagonal=false
tiro=1
jumpcount=false

evento KEYBOARD_CHECK(VK_SPACE)(//onde crio o tiro)

atirando=true;
if position=0&&tiro=1
{
if correndo = false && atirando = true && parado = false
{
if agaixado = true
{
var obj;
obj=instance_create(samus.x,samus.y,powershotright2);
with (obj) motion_set(0,28); tiro=0; alarm[0]=4
}
else
{
var obj;
obj=instance_create(samus.x+73,samus.y-30,powershotright);
with (obj) motion_set(0,28); tiro=0; alarm[0]=4
}

}}
mudei algumas coisas de acordo com as dicas de vcs, mas está acontecendo o que descreví no último post meu. Caso precisem de mas alguma coisa é só me avisar ( não consigo "upar" o game de onde estou Sad )
FMP
FMP

Data de inscrição : 04/05/2010
Reputação : 0
Número de Mensagens : 24
Prêmios : Erro no script atirar (creat_instance()) 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

Erro no script atirar (creat_instance()) Empty Re: Erro no script atirar (creat_instance())

Mensagem por giosepeluiz Ter 08 Jun 2010, 15:48

FMP escreveu:Reparei uma coisa. Pq vc só usa comparação (==) ao invès de igualdade(=) na hora de estipular alguma variável? Tentei usar o else dentro da condição if, mas depois de algumas linhas começou anão reconheçer mais, por algum motivo.Vou mostrar:

Evento CREATE do personagem:

parado=false
pulando=false
morphmode=false
correndo=false
atirando=false
left=180
right=0
position=0
screwattack=false
agaixado=false
aimup=false
aimdiagonal=false
tiro=1
jumpcount=false

evento KEYBOARD_CHECK(VK_SPACE)(//onde crio o tiro)

atirando=true;
if position=0&&tiro=1
{
if correndo = false && atirando = true && parado = false
{
if agaixado = true
{
var obj;
obj=instance_create(samus.x,samus.y,powershotright2);
with (obj) motion_set(0,28); tiro=0; alarm[0]=4
}
else
{
var obj;
obj=instance_create(samus.x+73,samus.y-30,powershotright);
with (obj) motion_set(0,28); tiro=0; alarm[0]=4
}

}}
mudei algumas coisas de acordo com as dicas de vcs, mas está acontecendo o que descreví no último post meu. Caso precisem de mas alguma coisa é só me avisar ( não consigo "upar" o game de onde estou Sad )

No Caso da Igualdade:

== -> Comparação
= -> Atribuição a uma variável

O Game Maker aceita = para comparar, mas NÃO é correto... O correto é == (comparar) e = (atribuir)

############

No Caso do If:

Para reconhece if dentro de else, tem que imaginar uma lógica, não adianta colocar a torta e a direita...

Exemplo:

Se "valor" é MENOR que 10 então faça isso...
Senão, se "valor" é MAIOR que 10 então faça aquilo...
Senão faça o outro...

Código:

if (valor < 10){
  "Faça Isso"
    }else{
      if (valor > 10){
        "Faça Aquilo"
      }else "Faça o Outro"
}
Explicando: Se o valor não for maior nem menor que 10... só pode ser IGUAL...
giosepeluiz
giosepeluiz

Data de inscrição : 21/05/2010
Reputação : 1
Número de Mensagens : 110
Prêmios : Erro no script atirar (creat_instance()) 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

http://www.orkut.com.br/Main#Profile?uid=12612551030963156921

Ir para o topo Ir para baixo

Erro no script atirar (creat_instance()) Empty Re: Erro no script atirar (creat_instance())

Mensagem por FMP Qua 09 Jun 2010, 03:03

Valeu pela explicação. Vou levar essas coisas em considereção na hora de fazer um projeto. Só me resta resolver esse problema do create instance...
FMP
FMP

Data de inscrição : 04/05/2010
Reputação : 0
Número de Mensagens : 24
Prêmios : Erro no script atirar (creat_instance()) 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

Erro no script atirar (creat_instance()) Empty Re: Erro no script atirar (creat_instance())

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