Entrar
Últimos assuntos
» player não consegue andarpor 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
Página 1 de 1
Erro no script atirar (creat_instance())
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&¶do=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&¶do=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!
Aqui vai o script para o botão SPACE
atirando=true
if position=0&&tiro=1
{if correndo=false&&atirando=true&¶do=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&¶do=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- Data de inscrição : 04/05/2010
Reputação : 0
Número de Mensagens : 24
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Erro no script atirar (creat_instance())
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:
Isso vai te ajudar muito a organizar e não se perder. É só uma dica.
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.
Convidad- Convidado
Re: Erro no script atirar (creat_instance())
É 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
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- Data de inscrição : 04/05/2010
Reputação : 0
Número de Mensagens : 24
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Erro no script atirar (creat_instance())
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.
----- 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.
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.
Convidad- Convidado
Re: Erro no script atirar (creat_instance())
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:
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...
- 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...
Re: Erro no script atirar (creat_instance())
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...
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- Data de inscrição : 04/05/2010
Reputação : 0
Número de Mensagens : 24
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Erro no script atirar (creat_instance())
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...
Re: Erro no script atirar (creat_instance())
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 )
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 )
FMP- Data de inscrição : 04/05/2010
Reputação : 0
Número de Mensagens : 24
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Erro no script atirar (creat_instance())
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 )
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"
}
Re: Erro no script atirar (creat_instance())
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- Data de inscrição : 04/05/2010
Reputação : 0
Número de Mensagens : 24
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Tópicos semelhantes
» [RESOLVIDO]atirar para direita e esquerda(erro no codigo)
» ajuda! erro de script!
» Script dando erro!!!
» [Resolvido] Erro em Script GM:S
» [Resolvido] game maker da erro sem ter erro
» ajuda! erro de script!
» Script dando erro!!!
» [Resolvido] Erro em Script GM:S
» [Resolvido] game maker da erro sem ter erro
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos