Entrar
Últimos assuntos
» Preciso de ajudapor 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
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
» Erro no Script - Como posso resolver ele?
» ajuda! erro de script!
» Script dando erro!!!
» [Resolvido] Erro em Script GM:S
» Erro no Script - Como posso resolver ele?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|