Aula 11 – Bater em você ate você morrer parte 2

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

Qualidade Aula 11 – Bater em você ate você morrer parte 2

Mensagem por reddragon em Dom 15 Mar 2009, 16:35

Galera hoje vamos dar mais um passo importante na criação de um jogo RPG iremos montar o esquema de cálculos de batalha. Cálculos que definem se foi acertado o ataque e quanto de dano o ataque causou.

Para inicio vamos mudar e adicionar algumas variáveis. Primeiro em nosso obj criador de vars vamos mudar e adicionar as seguintes vars:

Código:
globalvar experiencia_total {experiencia_total = 0}
globalvar exp_invertida {exp_invertida = 10}
globalvar fasole {fasole = 10}         //fator de soma por LVL
globalvar level {level = 1}

globalvar tiv {tiv = 100}          //total de vida
globalvar vid {vid = 100}          //vida atual
globalvar atk {atk = 15}            //ataque
globalvar def {def = 15}            //defesa
globalvar agl {agl = 12}            //agilidade

instance_destroy()

E em nosso obj_inimigo vamos adicionar, mas algumas vars e alterar outras:

Código:
//vars rpg
apanhando = false
barra_vida = 0
inimigo_exp = 3

vida = 100      //vida do bicho
atk = 11        //ataque
def = 20        //defesa
agl = 6        //agilidade
res = 0        //resultado

Bom agora já temos as vars necessárias para começar a brincadeira.

Mas antes vamos mudar um script para se adequar as novas vars.

No obj_inimigo no step mude a linha: barra_vida = vida * 100 / 5. Para: barra_vida = vida * 100 / 100. Porque agora 100 será o total de vida de nosso inimigo.

Basicamente serão necessário 2 cálculos o de acerto e o de dano e duas situações quando eu ataco e quando o inimigo ataca. Vamos começar analisando os cálculos.

Calculo de acerto.

Se Agl_do_defensor <= random(Agl_do_atacante){
Conseguiu atacar
}else{
Errou
}

Exp1:

Agl_do_atacante = 30
Agl_do_defensor = 20

Se 20 <= 0~30{
Conseguiu atacar
}else{
Errou
}

Se o resultado for maior ou igual a 20 então acontecerá o ataque.

Exp2:

Agl_do_atacante = 20
Agl_do_defensor = 30

Se 30 <= 0~20{
Conseguiu atacar
}else{
Errou
}

Bom como qualquer resultado entre 0 e 20 é menor que 30 então o atacante nunca acertara o ataque.

Então e importante frisar que sempre que a agilidade do defensor for maior que a do atacante, o atacante nunca acertara o ataque.

Calculo de dano

O calculo de dano é baseado na porcentagem da diferença entre o ataque do atacante e a defesa do defensor após isso o ataque do atacante é mudada segundo a porcentagem da diferença.

Bom ta confuso! Mas para explicar iremos passo a passo. Vamos primeiro dividir a frase em duas partes:

Primeira: “O calculo de dano é baseado na porcentagem da diferença entre o ataque do atacante e a defesa do defensor”

Esse calculo é bem simples para fazermos vamos tomar um exemplo:

Atk = 25
Def = 50

Retp = Atk * 100 / Def
Retp = 25 * 100 / 50
Retp = 2500 / 50
Retp = 50%

Retp = resultado da porcentagem

Podemos concluir então que o ataque é 50% o valor da defesa.

Segunda: “após isso o ataque do atacante é mudada segundo a porcentagem da diferença.”

Agora já sabemos qual é a diferença em porcentagem do ataque para a defesa e na frase a cima vamos então mudar o ataque segundo essa porcentagem e para isso faremos:

Retf = Retp * Atk / 100
Retf = 50 * 50 / 100
Retf = 2500 / 100
Retf = 25

Retf = resultado final.

Apos todos os cálculos, chegamos a nossa reposta e ela é o ataque final será de 25. Mas esses cálculos podem ser simplificados e o vamos fazer.

As duas formulas são:

Retp = Atk * 100 / Def

Retf = Retp * Atk / 100

Mas o Retp da segunda formula tem um resultado em formula que pode ser substituído na segunda fazendo assim somente uma formula:

Ret = Atk * 100 / Def * Atk / 100

Agora juntado o calculo de acerto e o calculo de dano e traduzindo para GML na situação em que o player esta atacando o inimigo teremos esse script.

Código:
if iagl <= ceil(random(agl)){
ret = ceil(atk * 100 / idef * atk / 100)
vida -= ret
}else{
ret = “ERRO”
}

No nosso inimigo em seu script de dano podemos mudar a linha: vida -= atk. Para o script a cima, e também devemos mudar outra linha:

De:

Código:
dano.dano = atk

Para:

Código:
dano.dano = ret

Essa aula já tem um bom tamanho, mas não foi feito muita coisa e para fazermos mais alguma coisa vamos fazer algo que é feito para uma coisa fazer duas.

Mas como o que e como?

Vamos fazer o obj_dano alem de mostrar o dano que o inimigo mostrar também o exp que o player ganhou.

Como! É muito fácil.

Primeiro vamos fazer, quando for um dano a cor seja branca e quando for exp seja verde.

No create do obj dano adicione essa var.

Código:
cor = c_white

E no evento draw substitua todos os c_white por cor e agora voltaremos no evento collision do obj inimigo e lá vamos adicionar um script entre: exp_invertida -= inimigo_exp; e instance_destroy() vamos adicionar o seguinte script:

Código:
dano = instance_create(obj_player.x,obj_player.y,obj_dano);
dano.dano = inimigo_exp
dano.cor = c_green

E para não desprezar um detalhe mudaremos o Depth do obj_dano para -1.

Depth e um nível de imagem que o GM tem para definir quais sprite vão a cima de quais sprites.

Essas camadas têm suas camadas superiores com o valor negativo e positivo são as de baixo:

Pense nelas como folhas transparentes onde os desenhos são colocados e as camadas superiores tem seu valor negativo e com valor positivo são as imagens inferiores.



Essa imagem representa que quanto mais para cima menor é o numero e mais para baixo maior é o numero.

Bom galera chegamos ao fim de mais uma aula espero que tenham gostado e nas próximas iremos falar um pouco sobre inteligência artificial e bolsas.

aula11 demo


tutorial feito por RedDragon


Última edição por Janx em Sex 10 Set 2010, 20:36, editado 4 vez(es) (Razão : adição da demo)

reddragon

Número de Mensagens : 267
Idade : 27
Data de inscrição : 19/03/2008
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Qualidade Re: Aula 11 – Bater em você ate você morrer parte 2

Mensagem por Dancity em Dom 15 Mar 2009, 19:05

Mais um tuto sensacional pelo nosso amigo reddragon!

Continue assim! Vai ajudar d+ no rpg!

Dancity

Ranking : Nota A
Número de Mensagens : 1339
Data de inscrição : 11/01/2009
Notas recebidas : A
Reputação : 8
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   :
   :

Voltar ao Topo Ir em baixo

Qualidade Re: Aula 11 – Bater em você ate você morrer parte 2

Mensagem por patoki em Sex 17 Abr 2009, 13:27

Sim, seus tutos sao realmente um espectaculo, gostaria que postasse mais!fico a espera

patoki

Número de Mensagens : 175
Idade : 20
Data de inscrição : 19/12/2008
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Qualidade Re: Aula 11 – Bater em você ate você morrer parte 2

Mensagem por xxxAKIRAxxx em Dom 26 Abr 2009, 18:16

Exelente!!!
Ótimo!!!
esperando pelas proximas aulas ^___^

xxxAKIRAxxx

Número de Mensagens : 108
Idade : 26
Data de inscrição : 04/02/2009
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   : 1
   :

Voltar ao Topo Ir em baixo

Qualidade Muito bom!

Mensagem por Devil-Kai em Sab 13 Jun 2009, 23:24

reddragon, sou novo no forum, mas vi todas as aulas e aguardo anciosamente por mais!!!
parabéns! Very Happy

Devil-Kai

Número de Mensagens : 7
Idade : 22
Data de inscrição : 13/06/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Qualidade Ajuda!!!

Mensagem por Devil-Kai em Dom 14 Jun 2009, 18:21

Eu estou com um problema, eu estou tentando fazer com que quando eu me aproxime do inimigo ele me bata, eu até crie um hp para o obj_player, mas eu não consigo fazer o inimigo atacar automaticamente! Se alguem puder me ajudar. Happy

Obrigado!

Devil-Kai

Número de Mensagens : 7
Idade : 22
Data de inscrição : 13/06/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Qualidade !

Mensagem por Devil-Kai em Seg 15 Jun 2009, 12:25

Ja achei a solução!!! Obrigado!

http://gmbr.forumeiros.com/perguntas-respostas-f10/ajuda-com-ataque-do-inimigo-t3020.htm?highlight=inimigo




Rolling Eyes Me desculpe os posts consecutivos, não farei novamente! Rolling Eyes


Última edição por Devil-Kai em Seg 15 Jun 2009, 21:15, editado 1 vez(es)

Devil-Kai

Número de Mensagens : 7
Idade : 22
Data de inscrição : 13/06/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Qualidade Re: Aula 11 – Bater em você ate você morrer parte 2

Mensagem por RKNF1995 em Seg 15 Jun 2009, 16:58

amigo evite posts duplos ou triplo cliquem em editar flws

RKNF1995

Número de Mensagens : 1257
Idade : 21
Data de inscrição : 19/07/2008
Reputação : 6
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://www.rknf1995.blogspot.com

Voltar ao Topo Ir em baixo

Qualidade Re: Aula 11 – Bater em você ate você morrer parte 2

Mensagem por edsondiamantino em Qua 11 Ago 2010, 13:49

cara ficou muito bom mesmo....

agora ainda fiquei com uma dúvida...

como fazer o player perder a vida... pois já tentei mas não consegui...

valeu um abraço...

edsondiamantino

Número de Mensagens : 17
Data de inscrição : 31/05/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Qualidade Re: Aula 11 – Bater em você ate você morrer parte 2

Mensagem por rafael3do em Seg 08 Ago 2011, 12:39

edsondiamantino
ficou a duvida aew fi pq tipo tu nn tem barra de vida e nem perde pq mob nn ataca eu tbm qeria saber como fazer isso tipo colisao no mob e vc apanha axo q se pega o codigo de atak e joga como o de colisao torncando mob por player da nem sei mas tenta

rafael3do

Ranking : Nota D
Número de Mensagens : 119
Idade : 21
Data de inscrição : 07/08/2011
Notas recebidas : D
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.equipe3do.blogspot.com

Voltar ao Topo Ir em baixo

Qualidade Re: Aula 11 – Bater em você ate você morrer parte 2

Mensagem por Conteúdo patrocinado Hoje à(s) 02:43


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