Como criar uma condição utilizando level?

10 Respostas   1073 Visualizações

0 Membros e 1 Visitante estão vendo este tópico.

andrewzoka

  • *
  • Posts: 100
  • Ouros: 63
  • Nunca foi sorte, sempre foi Deus.
Tópico criado em: 25/05/2017 às 16:33 - Última modificação por andrewzoka em 26/05/2017 às 16:51

Procurei algum tópico sobre o assunto e não encontrei...
Basicamente é uma condição de quando um personagem chega em um certo nível, fazer por exemplo que uma criatura fique mais forte. Sabem como fazer?

Harus Game is coming.
https://www.indiexpo.net/pt/games/harus
© 2020 copyright.

SoyeR

Resposta 1: 25/05/2017 às 17:07

Não sei se é bem isso que tu quer, mas a principio eu faria assim:
Spoiler
[close]




andrewzoka

  • *
  • Posts: 100
  • Ouros: 63
  • Nunca foi sorte, sempre foi Deus.
Resposta 2: 25/05/2017 às 17:21 - Última modificação por andrewzoka em 25/05/2017 às 17:24

Não... acho que a melhor forma mesmo é através de uma condição... é que meu sistema de batalha não é por turno, e sim usado o SAS

Harus Game is coming.
https://www.indiexpo.net/pt/games/harus
© 2020 copyright.

Corvo

Resposta 3: 25/05/2017 às 17:21 - Última modificação por Corvo em 25/05/2017 às 17:55

Infelizmente o Ace não possui uma condição direta para verificar o nível do jogador. Para isto, utilize uma variável, assim:

Código: [Selecionar]
Controle de Variável>Dados do Jogo>Personagem>Nível
Spoiler
[close]

Feito isso, a variável que você escolheu possui o nível do herói como valor. Se ele está no nível cinco, esse é o valor dela. Agora, use uma condição para verificar o valor da variável, dessa forma:

Código: [Selecionar]
Condição>Variável
Spoiler
[close]

Pronto, aqui está sua condição verificando o nível do herói:


M3T

  • *
  • Posts: 35
  • Ouros: 123
Resposta 4: 25/05/2017 às 18:39 - Última modificação por M3T em 25/05/2017 às 19:27

Fiz um pequeno script para te ajudar:
tirei porque o outro é melhor

Dentro da condição de nível que o @Corvo passou, chame o script:
Código: [Selecionar]
set_enemy_hp(id_do_inimigo, hp_nova)Isso vai alterar a HP máxima padrão do inimigo de id 'id_do_inimigo' para X. Já fica salvo automaticamente. Porém, eu acho que, se tiver um inimigo que já foi criado no mapa, a HP dele não vai mudar com esse comando.

EDIT:
Pensei que fosse só a HP que você queria mudar. Agora que eu vi que queria deixar o inimigo mais forte. Bom, se isso não for o suficiente, me dê um toque que eu deixo o script mais completo!

EDIT 2:
Completei o script:
Código: [Selecionar]
class Game_System
  attr_accessor :paramchange_list
  alias :m3t_initialize :initialize
  def initialize
    m3t_initialize
    @paramchange_list = {}
  end
end

class Game_Interpreter
  def set_enemy_param(enemy_id, param, value)
    $game_system.paramchange_list[enemy_id] ||= {}
    $game_system.paramchange_list[enemy_id][param] = value
  end
 
  def set_enemy_hp(enemy_id, hp)
    set_enemy_param(enemy_id, 0, hp)
  end
 
  def set_enemy_mp(enemy_id, mp)
    set_enemy_param(enemy_id, 1, mp)
  end
 
  def set_enemy_atk(enemy_id, atk)
    set_enemy_param(enemy_id, 2, atk
  end
 
  def set_enemy_def(enemy_id, defe)
    set_enemy_param(enemy_id, 3, defe)
  end
 
  def set_enemy_int(enemy_id, int)
    set_enemy_param(enemy_id, 4, int)
  end
 
  def set_enemy_res(enemy_id, res)
    set_enemy_param(enemy_id, 5, res)
  end
 
  def set_enemy_agi(enemy_id, agi)
    set_enemy_param(enemy_id, 6, agi)
  end
 
  def set_enemy_luck(enemy_id, luck)
    set_enemy_param(enemy_id, 7, luck)
  end
end

class Game_Enemy < Game_Battler
  def param_base(param_id)
    if $game_system.paramchange_list[enemy_id] && $game_system.paramchange_list[enemy_id][param_id]
      puts $game_system.paramchange_list[enemy_id][param_id]
      $game_system.paramchange_list[enemy_id][param_id]
    else
      enemy.params[param_id]
    end
  end
end

Comandos possíveis agora:
Código: [Selecionar]
set_enemy_hp(enemy_id, hp)
set_enemy_mp(enemy_id, mp)
set_enemy_atk(enemy_id, atk)
set_enemy_def(enemy_id, defe)
set_enemy_int(enemy_id, int)
set_enemy_res(enemy_id, res)
set_enemy_agi(enemy_id, agi)
set_enemy_luck(enemy_id, luck)

andrewzoka

  • *
  • Posts: 100
  • Ouros: 63
  • Nunca foi sorte, sempre foi Deus.
Resposta 5: 25/05/2017 às 20:50

Exatamente isso que eu queria! Vejo que ele funciona com todos esses recursos, somente com uso de skill que não, né? Porque no caso eu uso aquela "formula" as vezes nas skills pra uns ataques diferentes nos monstros (botei uma imagem do que estou falando abaixo).

 Mas de resto tudo funcionou como eu queria! Muito obrigado.







Harus Game is coming.
https://www.indiexpo.net/pt/games/harus
© 2020 copyright.

Corvo

Resposta 6: 25/05/2017 às 21:02 - Última modificação por Corvo em 25/05/2017 às 21:04

Você pode usar esse comando na fórmula, se quiser aumentar o poder de ataque do inimigo durante o jogo:
Código: [Selecionar]
v[x]  Ele representa a variável X, que você altera da mesma forma que as outras. Por exemplo, no início defina o valor dessa variável para 1, e aqui está um exemplo de fórmula:

Código: [Selecionar]
a.atk * v[1] - b.def
Ataque do atacante - vezes o valor da variável 1 (1) - menos a defesa do alvo.

Se você altera essa variável para dois o dano é o dobro. Veja:

Código: [Selecionar]
a.atk * v[1] - b.def
Ataque do atacante - vezes o valor da variável 1 (2) - menos a defesa do alvo.

Basta alterar o valor da variável na condição de fortalecimento do inimigo.

andrewzoka

  • *
  • Posts: 100
  • Ouros: 63
  • Nunca foi sorte, sempre foi Deus.
Resposta 7: 25/05/2017 às 21:32

Tá, vamos lá:

Eu entendi até aqui:



O que eu não entendi foi o seguinte: "Basta alterar o valor da variável na condição de fortalecimento do inimigo."
Eu estou tentando raciocinar onde que eu altero essa variável no meio do jogo, da mesma forma que fiz sobre o ataque, defesa, hp, etc... :S

Harus Game is coming.
https://www.indiexpo.net/pt/games/harus
© 2020 copyright.

M3T

  • *
  • Posts: 35
  • Ouros: 123
Resposta 8: 25/05/2017 às 23:49

Tá, vamos lá:

Eu entendi até aqui:



O que eu não entendi foi o seguinte: "Basta alterar o valor da variável na condição de fortalecimento do inimigo."
Eu estou tentando raciocinar onde que eu altero essa variável no meio do jogo, da mesma forma que fiz sobre o ataque, defesa, hp, etc... :S

Na mesma parte que você coloca os "chamar script" que eu passei (dentro da condição de nível), você muda essa variável.

Corvo

Resposta 9: 26/05/2017 às 08:25 - Última modificação por Corvo em 26/05/2017 às 08:30

É só alterar o valor dela normalmente:
Spoiler
[close]
Dentro da condição:

Lembrando: É importante que, no início do jogo ou da batalha, você defina essa variável para 1. Caso contrário, o valor dela será 0 e o inimigo não causará dano algum nos personagens.

andrewzoka

  • *
  • Posts: 100
  • Ouros: 63
  • Nunca foi sorte, sempre foi Deus.
Resposta 10: 26/05/2017 às 16:50

Obrigado! Acho que daqui consigo me virar agora, valeu e até a próxima dúvida!  :XD:

Harus Game is coming.
https://www.indiexpo.net/pt/games/harus
© 2020 copyright.