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
» player não consegue andar
por lovn7 Qui 21 Nov 2024, 13:33

» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22

» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31

» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23

» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49

» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58

» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36

» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36

» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33

» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51

» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28

» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18

» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08

» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10

» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16

» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40

» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01

» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45

» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34

» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28

» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48

» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54

» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14

» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50


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