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


Bug em tower defense

3 participantes

Ir para baixo

Bug em tower defense Empty Bug em tower defense

Mensagem por Lukbebalduke Qua 02 Out 2013, 18:36

Eae pessoal, hoje tava fazendo aqui um código para meu jogo de tower defense e montei um script para escolher qual o inimigo a mais tempo vivo dentro do alcance.

Código:
if modo=2{
for(i=1;i<=instance_number(obj_inimi);i+=1){
select=instance_find(obj_inimi,i);
if point_distance(x,y,select.x,select.y)<distancia
{
if ! instance_exists(selfhylander)
select=selfhylander;
if select.tempodevida>selfhylander.tempodevida or ! instance_exists(selfhylander) or point_distance(x,y,selfhylander.x,selfhylander.y)>distancia{select=selfhylander};
};
};
};
Primeiro ele verifica o modo da torre (isso não importa) ali ele faz um loop passando por todos os inimigos, checa se eles estão dentro da área e roda um olho código, que verifica se tem um inimigo a mais tempo vivo, se o tempo de vida do inimigo por qual estou passando tem o tempodevida maior do que o inimigo com maior tempodevida, se o inimigo com mais tempodevida ainda esta vivo e dentro do alcance. As variáveis são:

Torre escreveu:modo - Serve para nada
select - Inimigo por qual o código esta passando
selfhylander - Inimigo com maior tempodevida
tempodevida - Tempo de vida do inimigo
distancia - Alcance
O problema é o seguinte, mesmo o inimigo com maior tempo de vida estando fora do alcance ele ainda é escolhido como o inimigo com maior tempo de vida dentro do alcance. Já tentei de tudo e não funcionou.
Lukbebalduke
Lukbebalduke

Games Ranking : Nota B

Notas recebidas : B - B - A - B
Data de inscrição : 06/07/2011
Reputação : 30
Número de Mensagens : 765
Prêmios : Bug em tower defense Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 2

Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Bug em tower defense Empty Re: Bug em tower defense

Mensagem por All-x Qua 02 Out 2013, 21:07

Bom, não consegui entender muito bem seu código. Então tentei me basear no que tu escreveu e refiz tudo:

Código:
//Guarda quem tem o maior tempo de vida. Suponhamos que o primeiro já seja o maior de todos.
var sou_maior;sou_maior = instance_find(obj_inimi,0);

//Se está no modo 2
if (modo == 2)
{
    //Loop para caçar cada "obj_inimi"
    for(i=1; i < instance_number(obj_inimi); i+=1)
    {
        //Guarda ID do objeto
        var _sel;_sel = instance_find(obj_inimi,i);
        
        //Caso este tenha "tempodevida" maior do que o de quem era maior antes
        if (_sel.tempodevida > sou_maior.tempodevida)
        {
            //Define quem é o novo maior "vivedor"
            sou_maior = _sel;
        }
        
        //Se a minha distancia do selecionado for menor que a var "distancia"
        if (point_distance(x,y,_sel.x,_sel.y) < distancia)
        {  
            //Define "selfhylander" como o que tem mais tempo de vida
            selfhylander = sou_maior;
        }
    }
}

/*Obs: Lembre-se de executar esse código somente quando existirem inimigos.
Dessa maneira esse código dá à variável selfhylander o ID do obj_inimi dentro do alcance de distancia com a variável tempodevida maior.

Tente deixar seus códigos mais organizados, tava tudo muito junto e havia bastante redundância em certas partes.

Não sei se vai resolver, mas caso não detalhe um pouco mais tua dúvida. Valeu?

FLWS!
All-x
All-x

Games Ranking : Nota A

Notas recebidas : B A
Data de inscrição : 20/12/2008
Reputação : 189
Número de Mensagens : 2571
Prêmios : Bug em tower defense Empty

Medalhas x 0 Tutoriais x 25 Moedas x 0

Ouro x 2 Prata x 1 Bronze x 1

Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Javascript
  • C ou C++


https://redscreensoft.com

Ir para o topo Ir para baixo

Bug em tower defense Empty Re: Bug em tower defense

Mensagem por Lukbebalduke Qua 02 Out 2013, 21:54

Sim, mas até ai faz o mesmo do meu código, ele tem o mesmo erro, quando o selfhylander sai do range ele continua tentando atirar nele, ele teria que escolher outro dentro do range, nesse parte que o meu código não funcionava, tentei resolver de forma simples só verificando com um point_distance até o selfhylander, mas por raios de motivo ele não funciona direito.
Lukbebalduke
Lukbebalduke

Games Ranking : Nota B

Notas recebidas : B - B - A - B
Data de inscrição : 06/07/2011
Reputação : 30
Número de Mensagens : 765
Prêmios : Bug em tower defense Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 2

Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Bug em tower defense Empty Re: Bug em tower defense

Mensagem por PedroX Qua 02 Out 2013, 23:08

Pinpi, embora seu código esteja muito confuso, tentei o seguinte:
Código:
if (modo == 2)
{
var vitPrio; vitPrio = ds_priority_create();
with(obj_inimi){
  ds_priority_add(vitPrio, id, point_distance(x, y, other.x, other.y));
      }

v = ds_priority_delete_min(vitPrio);

repeat(ds_priority_size(vitPrio))
{
vv = ds_priority_delete_min(vitPrio); //pega o valor e deleta
if (point_distance(vv.x, vv.y, x, y) > permitida)
{break;}
else
{
if (vv.tempo_de_vida > v.tempo_de_vida)
{v = vv;}
}
}
ds_priority_destroy(vitPrio);

// v = instancia mais velha e que está dentro da distância permitida.
}
Engine: http://www.mediafire.com/?3z7p6icfa9b2e28

Obs: o segundo point_distance assegura que se não houver uma instância dentro do raio permitido a mais próxima não seja usada.

_________________


Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.

Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.

Aprenda a calcular a velocidade de suas animações


Entre para o Clube do Inglês:
PedroX
PedroX

Games Ranking : Nota B

Notas recebidas : C+B
Data de inscrição : 26/07/2008
Reputação : 311
Número de Mensagens : 6087
Prêmios : Bug em tower defense Empty

Medalhas x 0 Tutoriais x 17 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://web.whatsapp.com/send?phone=5519995935953&text=Pedro

Ir para o topo Ir para baixo

Bug em tower defense Empty Re: Bug em tower defense

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