Conectar-se
Quem está conectado
26 usuários online :: 1 usuário cadastrado, Nenhum Invisível e 25 Visitantes

jailson_dante

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Ranking : Sem avaliações
Data de inscrição : 02/07/2017
Número de Mensagens : 6
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Ataque por mouse [MOBA]

em Seg 03 Jul 2017, 14:34
Primeirameente Boooah!

Então, estou com um script que fiz, mas to precisando da uma melhorada !!
Eu fiz um ClickToMove(Mouse Left Button) para movimentar o player em 8-direction, está tudo correto !
E também um para atacar com o (Mouse Right Button), mais não está como quero!

Step Script: :
if attack == true{
if (attack_recharge >= 5){
attack_recharge = 0;
abc = instance_create(x,y,obj_bullet);
abc.speed = 10;
abc.direction = point_direction(x,y,mouse_x,mouse_y) + irandom_range(-3,3);
abc.image_angle = abc.direction;
}

Eu gostária de um ataque estilo lol, que ao clickar no inimigo ou na torre, e se o attack = true e o player estiver a uma certa distancia do inimigo ou torre, poderia atacar!
E tipo, como faço para atacar sem recharge, por etapa(segundos) ! Ex: de 4 em 4 segundos.
}


Última edição por rafaelviodres1 em Seg 03 Jul 2017, 14:37, editado 2 vez(es) (Razão : Não estavá postando.)
avatar
Ranking : Sem avaliações
Data de inscrição : 21/11/2010
Número de Mensagens : 775
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 25

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Ataque por mouse [MOBA]

em Qua 05 Jul 2017, 21:26
Eu não testei os codigos, estou escrevendo do fundo do coração, espero que funcione

No player

No Create
Código:
timer = 0 // Cria o relogio para o Recharge
min_dist = 300 // Define a distancia minima para atacar
recharge_full = 4 // Define o tempo em segundos para recarga
target = self // Define o proprio objeto como Alvo inicial
attack = false // Define o ataque como falso

No Step
Código:

if attack = true // Se tiver um alvo
    {
    if point_distance(x,y,alvo.x,alvo.y) <= min_dist // Se estiver na distancia
        {
        timer += 1/room_speed // Add um tick por segundo ao timer
        
        if timer >= recharge_full // Se o timer chegar ao maximo
            {
            timer = 0 //Reinicia o timer
            
            abc = instance_create(x,y,obj_bullet); // Cria o bullet, o resto aqui é oq vc fez, n sei se ta funcionando
            abc.speed = 10;
            abc.direction = point_direction(x,y,target.x,target.y) + irandom_range(-3,3);
            abc.image_angle = abc.direction;
            }
        }
    else
        {
        // Execute algo para quando ele estiver muito longe
        }
    }


No objeto do Inimigo

No evento mouse_right_button ou mouse_right_pressed
Código:
obj_player.target = self // Se define como o alvo do player
obj_player.attack = true // Inicia o ataque
obj_player.timer = recharge_full // Coloca o timer no maximo para dar o primeiro tiro imediatamente


Espero que funcione, qualquer coisa avisa ae, quando puder manda uma foto do projeto Very Happy

Flw
avatar
Ranking : Sem avaliações
Data de inscrição : 02/07/2017
Número de Mensagens : 6
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

:)

em Qua 05 Jul 2017, 22:47
Olá, eu testei ele, só que eu já tinha conseguido fazer com que de certo.
Ele funcionou, só que se tiver + que 1 inimigo na room, todos serao danados pelo obj_bullet.

Então fiz assim para que ficasse certo.

CREATE (obj_player)::
attack = false;
attack_recharge = 5;


STEP (obj_player)::
attack_recharge += 0.2;

MOUSE R.PRESSED (obj_player)::
if attack == true{
if (attack_recharge >= 5){
attack_recharge = 0;
abc = instance_create(x,y,obj_bullet);
abc.speed = 10;
abc.direction = point_direction(x,y,mouse_x,mouse_y) + irandom_range(-3,3);
abc.image_angle = abc.direction;
}
}

MOUSE R.PRESSED (obj_inimigo)::
if(distance_to_object(obj_player) <=250){
obj_player.mytarget = obj_enemy;
obj_player.attack = true;
obj_player.my_targetx = x;
obj_player.my_targety = y;
}
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum