Entrar
Últimos assuntos
» player não consegue andarpor 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
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
Aula 11 – Bater em você ate você morrer parte 2
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:
E em nosso obj_inimigo vamos adicionar, mas algumas vars e alterar outras:
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.
Exp1:
Se o resultado for maior ou igual a 20 então acontecerá o ataque.
Exp2:
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:
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 = 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:
Mas o Retp da segunda formula tem um resultado em formula que pode ser substituído na segunda fazendo assim somente uma formula:
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.
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:
Para:
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.
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:
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.
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) (Motivo da edição : adição da demo)
reddragon- Data de inscrição : 19/03/2008
Reputação : 0
Número de Mensagens : 267
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Aula 11 – Bater em você ate você morrer parte 2
Mais um tuto sensacional pelo nosso amigo reddragon!
Continue assim! Vai ajudar d+ no rpg!
Continue assim! Vai ajudar d+ no rpg!
Dancity- Games Ranking :
Notas recebidas : A
Data de inscrição : 11/01/2009
Reputação : 8
Número de Mensagens : 1340
Prêmios :
x 0 x 0 x 0
x 1 x 0 x 0
x 0 x 0 x 0
Re: Aula 11 – Bater em você ate você morrer parte 2
Sim, seus tutos sao realmente um espectaculo, gostaria que postasse mais!fico a espera
patoki- Data de inscrição : 19/12/2008
Reputação : 0
Número de Mensagens : 175
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Aula 11 – Bater em você ate você morrer parte 2
Exelente!!!
Ótimo!!!
esperando pelas proximas aulas ^___^
Ótimo!!!
esperando pelas proximas aulas ^___^
xxxAKIRAxxx- Data de inscrição : 04/02/2009
Reputação : 1
Número de Mensagens : 108
Prêmios :
x 0 x 0 x 0
x 0 x 1 x 0
x 0 x 0 x 0
Muito bom!
reddragon, sou novo no forum, mas vi todas as aulas e aguardo anciosamente por mais!!!
parabéns!
parabéns!
Devil-Kai- Data de inscrição : 13/06/2009
Reputação : 0
Número de Mensagens : 7
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Ajuda!!!
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.
Obrigado!
Obrigado!
Devil-Kai- Data de inscrição : 13/06/2009
Reputação : 0
Número de Mensagens : 7
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
!
Ja achei a solução!!! Obrigado!
https://gmbr.forumeiros.com/perguntas-respostas-f10/ajuda-com-ataque-do-inimigo-t3020.htm?highlight=inimigo
Me desculpe os posts consecutivos, não farei novamente!
https://gmbr.forumeiros.com/perguntas-respostas-f10/ajuda-com-ataque-do-inimigo-t3020.htm?highlight=inimigo
Me desculpe os posts consecutivos, não farei novamente!
Última edição por Devil-Kai em Seg 15 Jun 2009, 21:15, editado 1 vez(es)
Devil-Kai- Data de inscrição : 13/06/2009
Reputação : 0
Número de Mensagens : 7
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Aula 11 – Bater em você ate você morrer parte 2
amigo evite posts duplos ou triplo cliquem em editar flws
Re: Aula 11 – Bater em você ate você morrer parte 2
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...
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- Data de inscrição : 31/05/2010
Reputação : 0
Número de Mensagens : 17
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Aula 11 – Bater em você ate você morrer parte 2
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
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
Tópicos semelhantes
» Aula 9 – bater em você ate você morrer
» aula 0 - Coisas que você precisa saber
» Game Maker - Aula 6 (parte 1) - Estrutura e Funcionamento da GML
» Game Maker - Aula 7 - Estrutura e Funcionamento da GML (parte 2)
» [Aula - 02] Arte gráfica e efeitos especiais para Game Maker - Parte 1
» aula 0 - Coisas que você precisa saber
» Game Maker - Aula 6 (parte 1) - Estrutura e Funcionamento da GML
» Game Maker - Aula 7 - Estrutura e Funcionamento da GML (parte 2)
» [Aula - 02] Arte gráfica e efeitos especiais para Game Maker - Parte 1
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos