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
» player não consegue andar
por lovn7 Qui 21 Nov 2024, 13:33

» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22

» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31

» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23

» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49

» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58

» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36

» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36

» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33

» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51

» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28

» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18

» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08

» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10

» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16

» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40

» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01

» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45

» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34

» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28

» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48

» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54

» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14

» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50


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

+4
xxxAKIRAxxx
patoki
Dancity
reddragon
8 participantes

Ir para baixo

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

Mensagem por reddragon 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.

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

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) (Motivo da edição : adição da demo)
reddragon
reddragon

Data de inscrição : 19/03/2008
Reputação : 0
Número de Mensagens : 267
Prêmios : Aula 11 – Bater em você ate você morrer parte 2 Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

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

Mensagem por Dancity Dom 15 Mar 2009, 19:05

Mais um tuto sensacional pelo nosso amigo reddragon!

Continue assim! Vai ajudar d+ no rpg!
Dancity
Dancity

Games Ranking : Nota A

Notas recebidas : A
Data de inscrição : 11/01/2009
Reputação : 8
Número de Mensagens : 1340
Prêmios : Aula 11 – Bater em você ate você morrer parte 2 Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

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

Mensagem por patoki Sex 17 Abr 2009, 13:27

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

Data de inscrição : 19/12/2008
Reputação : 0
Número de Mensagens : 175
Prêmios : Aula 11 – Bater em você ate você morrer parte 2 Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

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

Mensagem por xxxAKIRAxxx Dom 26 Abr 2009, 18:16

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

Data de inscrição : 04/02/2009
Reputação : 1
Número de Mensagens : 108
Prêmios : Aula 11 – Bater em você ate você morrer parte 2 Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 1 Bronze x 0

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

Ir para o topo Ir para baixo

Aula 11 – Bater em você ate você morrer parte 2 Empty Muito bom!

Mensagem por Devil-Kai Sáb 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
Devil-Kai

Data de inscrição : 13/06/2009
Reputação : 0
Número de Mensagens : 7
Prêmios : Aula 11 – Bater em você ate você morrer parte 2 Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Aula 11 – Bater em você ate você morrer parte 2 Empty Ajuda!!!

Mensagem por Devil-Kai 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
Devil-Kai

Data de inscrição : 13/06/2009
Reputação : 0
Número de Mensagens : 7
Prêmios : Aula 11 – Bater em você ate você morrer parte 2 Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

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

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

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

https://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
Devil-Kai

Data de inscrição : 13/06/2009
Reputação : 0
Número de Mensagens : 7
Prêmios : Aula 11 – Bater em você ate você morrer parte 2 Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

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

Mensagem por RKNF1995 Seg 15 Jun 2009, 16:58

amigo evite posts duplos ou triplo cliquem em editar flws
RKNF1995
RKNF1995

Data de inscrição : 19/07/2008
Reputação : 6
Número de Mensagens : 1257
Prêmios : Aula 11 – Bater em você ate você morrer parte 2 Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

http://www.rknf1995.blogspot.com

Ir para o topo Ir para baixo

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

Mensagem por edsondiamantino 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
edsondiamantino

Data de inscrição : 31/05/2010
Reputação : 0
Número de Mensagens : 17
Prêmios : Aula 11 – Bater em você ate você morrer parte 2 Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

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

Mensagem por rafael3do 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
rafael3do

Games Ranking : Nota D

Notas recebidas : D
Data de inscrição : 07/08/2011
Reputação : 0
Número de Mensagens : 119
Prêmios : Aula 11 – Bater em você ate você morrer parte 2 Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

http://www.equipe3do.blogspot.com

Ir para o topo Ir para baixo

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

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