O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Como criar uma condição utilizando level?

Iniciado por andrewzoka, 25/05/2017 às 16:33

25/05/2017 às 16:33 Última edição: 26/05/2017 às 16:51 por andrewzoka
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.

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





25/05/2017 às 17:21 #2 Última edição: 25/05/2017 às 17:24 por andrewzoka
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.

25/05/2017 às 17:21 #3 Última edição: 25/05/2017 às 17:55 por Corvo
Infelizmente o Ace não possui uma condição direta para verificar o nível do jogador. Para isto, utilize uma variável, assim:

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:

Condição>Variável

Spoiler
[close]

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


25/05/2017 às 18:39 #4 Última edição: 25/05/2017 às 19:27 por M3T
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:
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:
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:
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)

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.

25/05/2017 às 21:02 #6 Última edição: 25/05/2017 às 21:04 por Corvo
Você pode usar esse comando na fórmula, se quiser aumentar o poder de ataque do inimigo durante o jogo:
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:

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:

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.

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.

Citação de: andrewzoka online 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

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

26/05/2017 às 08:25 #9 Última edição: 26/05/2017 às 08:30 por Corvo
É 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.

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.