(Resolvido)Limite de tiros

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

(Resolvido)Limite de tiros

Mensagem por gabriel33245900 em Seg 08 Set 2014, 09:21

Então criei meu personagem para atirar só que queria saber como faz limite de atirar tipo quero que ele só pode atirar 3 tiro por distancia  tipo após os tiro ficar numa certa distancia que eu colocar eu possa continuar atirando tipo atirei 3 tiro depois que ele sair da minha tela eu posso atirar denovo =p
quero que ele tenha limite de atirar só ate 3 tiros e depois espere os tiro sair do mapa para atirar de novo
if keyboard_check_pressed(ord("A")){
if direita = false{
with( instance_create(x,y,Tiro_de_fogo)){
sprite_index=sprite14
motion_set(180,20)}}
if direita = true{
with( instance_create(x,y,Tiro_de_fogo)){
sprite_index= sprite13
motion_set(0,20)}}}

esse é o codigo das minhas bala o que preciso para fazer limite de tiros ate sair do mapa os tiro


Última edição por gabriel33245900 em Ter 09 Set 2014, 07:46, editado 1 vez(es)

gabriel33245900

Número de Mensagens : 361
Idade : 16
Data de inscrição : 06/09/2014
Reputação : 54
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: (Resolvido)Limite de tiros

Mensagem por Mateus O de Andrade em Seg 08 Set 2014, 09:54

Bom dia Colega,
Acho que primeiro você deve criar uma varável para iidentificar que ele está atirando (global.atirando=false seria bom)
Altere isso também.
if keyboard_check_pressed(ord("A")) && global.atirando=false
E quando você apertar a tecla de tiro coloque o seguinte
if direita = false{
global.atirando=true

Isso vai limitar seu tiro.
Para atirar novamente quando a bala for destruida:
No projétil coloque um evento outside room e nele coloque um destroy self e set variable "global.atirando=true"
Isso fara você atirar novamente.

OBSERVAÇÃO: Isso é apenas para ele ter um limite de tiro até o outro ser destruído. Para fazer o que você quer você deverá aprender a trabalhar com alarmes ou outra função, mas não tenho muito tempo para pensar em alguma outra solução. Desculpe, mas daqui a pouco surge uma outra dica para você.

Espero ter ajudado cara.

Mateus O de Andrade

Ranking : Nota D
Número de Mensagens : 399
Idade : 31
Data de inscrição : 25/03/2014
Reputação : 37
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: (Resolvido)Limite de tiros

Mensagem por gabriel33245900 em Seg 08 Set 2014, 10:01

quero que o tiro seja 3 como fasso para ser 3 tiros amigo = alguem me ajuda ai Sad após os 3 tiro serem destruido posso atirar mais 3

gabriel33245900

Número de Mensagens : 361
Idade : 16
Data de inscrição : 06/09/2014
Reputação : 54
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: (Resolvido)Limite de tiros

Mensagem por GabrielXavier em Seg 08 Set 2014, 11:07

 if global.atirando<3{
//aqui você cria a instancia da bala
}

no "create" do obj_bala você adiciona mais um na variavel global.atirando

"global.atirando+=1;"

no no evento "outside room" do obj bala você usa o "instance_destroy();"

E no "evento destroy" do obj bala você diminui 1 da variavel 
global.atirando

"global.atirando-=1;"

Não sei se vai funcionar nem tive tempo de testar  pale
Mas tenta ai, vai que funciona  Laughing

Edit:
Dessa forma você vai poder ter 3 instancias do obj_bala na room por exemplo voce deu tres tiros, nao pode atira mais ate que pelo menos um obj_bala saia da room, assim que o primeiro tiro sair da room ainda vao restar dois obj_bala na room e voce ja podera atirar mais uma vez,
Assim serve ou você prefere que so seja possivel atirar denovo assim que as tres balas sairem da room?


Edit2: Sim Matheus O tem que ser <3, esperar ele vir pra ver oque ele quer kk


Última edição por GabrielXavier em Seg 08 Set 2014, 11:24, editado 1 vez(es)

GabrielXavier

Ranking : Nota A
Número de Mensagens : 359
Data de inscrição : 25/02/2012
Notas recebidas : A
Reputação : 15
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 1

Voltar ao Topo Ir em baixo

Re: (Resolvido)Limite de tiros

Mensagem por Mateus O de Andrade em Seg 08 Set 2014, 11:23

A dica do Gabriel vai funcionar mas vai dar 4 tiros, só tem que ser if global.atirando<3{ para deixar com apenas 3 tiros. E mesmo assim, quando um tiro for destruído outro poderá ser disparado. Se você quer que somente depois que os 3 tiros sejam destruídos possa atirar novamente, ainda terá que fazer alterações. Não sei qual sua ideia, mas acho que do modo que o Gabriel propôs fica melhor.
Para fazer como você quer, a situação para alterar a variável atirando teria que ser
se atirando=3 e não existir nenhuma instancia "tiro" na room
{global.atirando=0}
Só testando para verificar se vai dar certo.

Mateus O de Andrade

Ranking : Nota D
Número de Mensagens : 399
Idade : 31
Data de inscrição : 25/03/2014
Reputação : 37
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: (Resolvido)Limite de tiros

Mensagem por theguitarmester em Seg 08 Set 2014, 11:24

Não pude deixar de comentar este tópico, tamanha quantidade de erros ortográficos, é quase um assassinato dela.
Tente escrever melhor, use vírgulas(nos lugares certos), concordâncias, aplique algumas normas simples, não precisa ser um professor de português, mas escrever corretamente não faz mal a ninguém, pelo contrário, ajuda até em quem não te conhece formar um pré conceito positivo sobre você.


Sobre sua questão, tem vários jeitos de resolver, alguns mais "difíceis"(mas melhores) e outros mais fáceis, então dependerá de seu nível de conhecimento para eu poder lhe mostrar a melhor maneira(das que sei) para você. Mas para não ter que esperar você responder esta mensagem informando o seu conhecimento, vou fazer alguma suposição de o quanto você sabe através de sua dúvida, escrita e código. Julgando por estes 3 elementos anteriores, acredito que você seja iniciante, mas já sabe programar em GML, então não terá dificuldade para entender a ideia:

- Crie uma variável que cuidará da quantidade de tiros disponíveis.
- Se você tem tiros disponíveis, pode atirar.
- Cada vez que atira, abaixa um tiro disponível.
- cada vez que o tiro sai do campo de visão, aumenta um tiro disponível.

Aí está a lógica do que você quer, que vale para qualquer linguagem.


Aplicado em GML:
No objeto que vai atirar
CREATE:
Código:
globalvar tiro;tiro=3

NO EVENTO DO TIRO(no seu caso, após o keyboard_check_pressed(ord("A"))):
Código:
if tiro>0
{
tiro-=1
//Ação de atirar, criar projétil - no seu caso, o instance_create(x,y,tiro_de_fogo)
}
Objeto do tiro(tiro_de_fogo)

use o evento outside view, e dentro dele coloque:
Código:
instance_destroy
tiro+=1

Dúvidas? só escrever.

Editado: mensagem escrita antes de ver a do GabrielXavier.

theguitarmester

Ranking : Sem avaliações
Número de Mensagens : 1908
Idade : 21
Data de inscrição : 28/02/2012
Notas recebidas : B
Reputação : 80
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Prêmios
   : 2
   : 2
   : 1

http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Voltar ao Topo Ir em baixo

Re: (Resolvido)Limite de tiros

Mensagem por GabrielXavier em Seg 08 Set 2014, 11:33

O theguitar deu o exemplo mais certo da parada, ao colocar a bala para ser destruida ao sair da room se a room for grande o obj_Tiro_de_fogo vai sair da view e ainda demorara para ser destruido, e a ideia dele de atirar somente se tiver balas disponiveis é como funciona no mundo real então obviamente é a mais correta.
Então, ignore meu post e va pelo post do theguitar haha


So resta saber se ele quer que a prossima remessa de tiros podera vir somente depois que as tres instancias do obj_Tiro_de_fogo forem destruidas ou não.

GabrielXavier

Ranking : Nota A
Número de Mensagens : 359
Data de inscrição : 25/02/2012
Notas recebidas : A
Reputação : 15
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 1

Voltar ao Topo Ir em baixo

Re: (Resolvido)Limite de tiros

Mensagem por gabriel33245900 em Seg 08 Set 2014, 18:39

guitar eu fiz isso
STEP:
Código:
if keyboard_check_pressed(ord("A")){
if tiro>0
{
tiro-=1
//Ação de atirar, criar projétil - no seu caso, o instance_create(x,y,tiro_de_fogo)
}
if direita = false{
with( instance_create(x,y,Tiro_de_fogo)){
sprite_index=sprite14
motion_set(180,20)}}
if direita = true{
with( instance_create(x,y,Tiro_de_fogo)){
sprite_index= sprite13
motion_set(0,20)}}}
eu deixei o step do personagem que atira assim

CREATE do personagem que atira
Código:
    globalvar tiro;tiro=3
create da bala:
    globalvar tiro;tiro=3

outside view 0
instance_destroy();
tiro+=1
botei o (); porque aqui não funciona intance_destroy só esse mesmo então meu personagem ainda continua atirando daquele geito :l não mudou nada

gabriel33245900

Número de Mensagens : 361
Idade : 16
Data de inscrição : 06/09/2014
Reputação : 54
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: (Resolvido)Limite de tiros

Mensagem por WellingtonBecker em Seg 08 Set 2014, 18:50

Amigo, o certo no create é globalvar tiro=3

WellingtonBecker

Ranking : Nota D
Número de Mensagens : 820
Idade : 35
Data de inscrição : 09/05/2013
Notas recebidas : D
Reputação : 105
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: (Resolvido)Limite de tiros

Mensagem por gabriel33245900 em Seg 08 Set 2014, 18:53

wellington esse que tu colocou e 1 simbolo não reconhecido para meu game maker 8.0

gabriel33245900

Número de Mensagens : 361
Idade : 16
Data de inscrição : 06/09/2014
Reputação : 54
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: (Resolvido)Limite de tiros

Mensagem por WellingtonBecker em Seg 08 Set 2014, 18:58

Humm, coloque apenas tiro=3

WellingtonBecker

Ranking : Nota D
Número de Mensagens : 820
Idade : 35
Data de inscrição : 09/05/2013
Notas recebidas : D
Reputação : 105
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: (Resolvido)Limite de tiros

Mensagem por DieBoy em Seg 08 Set 2014, 19:04

Isso é apenas um exemplo. Ajeite o código do jeito que deseja:

step do player:
Código:

if ( keyboard_check_pressed(ord("A")) && instance_number(Tiro_de_fogo) < 3){ //Se tiver menos de 3 balas, ele atira
    instance_create(x, y, Tiro_de_fogo);
}

Step do objeto Tiro_de_fogo:
Código:

if (x > room_width || x < 0 || y > room_height || y < 0){
    instance_destroy(); //Se sair da sala, ele se destrói
}

DieBoy

Número de Mensagens : 91
Data de inscrição : 22/08/2014
Reputação : 49
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: (Resolvido)Limite de tiros

Mensagem por theguitarmester em Seg 08 Set 2014, 21:32

Não era para somente jogar o código que fiz em cima do seu, era para misturá-lo.

no espaço em que escrevi "//Ação de atirar, criar projétil - no seu caso... " era para colocar ali o seu código de tiro.

Mas isso se arruma facilmente, colocando seu código de tiro dentro do SE TIRO É MAIOR QUE 0, para assim, só atirar quando tiver tiro, ficando assim:
Código:
    if keyboard_check_pressed(ord("A")){
    if tiro>0
    {
    tiro-=1
    //Ação de atirar, criar projétil - no seu caso, o instance_create(x,y,tiro_de_fogo)
   
    if direita = false{
    with( instance_create(x,y,Tiro_de_fogo)){
    sprite_index=sprite14
    motion_set(180,20)}}
    if direita = true{
    with( instance_create(x,y,Tiro_de_fogo)){
    sprite_index= sprite13
    motion_set(0,20)}}}
}

theguitarmester

Ranking : Sem avaliações
Número de Mensagens : 1908
Idade : 21
Data de inscrição : 28/02/2012
Notas recebidas : B
Reputação : 80
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Prêmios
   : 2
   : 2
   : 1

http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Voltar ao Topo Ir em baixo

Re: (Resolvido)Limite de tiros

Mensagem por gabriel33245900 em Ter 09 Set 2014, 07:46

O dieboy já resolveu meu problema guitar =p Tópico resolvido!

gabriel33245900

Número de Mensagens : 361
Idade : 16
Data de inscrição : 06/09/2014
Reputação : 54
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: (Resolvido)Limite de tiros

Mensagem por Conteúdo patrocinado Hoje à(s) 19:49


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum