🤔 Para Refletir :
"Não, não olhe para mim, olhe para seu mouse e teclado e comece a desenvolver!"
- Victor Sena

Battle Hud EX checar ID da classe ao invés do personagem

AbsoluteXandy Masculino

Marquês
Membro
Membro
𝓢𝓱𝓲𝓪𝔀𝓪𝓼𝓮 𝓰𝓮𝓽𝓽𝓸 𝓭𝓪 𝔂𝓸!
Juntou-se
04 de Julho de 2015
Postagens
654
Bravecoins
119
Bem direto ao ponto, acabei optando por usar uma das battle huds do MOG por serem fáceis de customizar em questão de visual, mas acontece que duas personagens são capazes de trocar de classe com 2 skills diferentes (o que de fato troca os gráficos), mas como o Battle Hud EX checa o ID do personagem, mesmo com os gráficos mudados a face mostrada será sempre a mesma.​

Links para todos os scripts utilizados:
Battle Hud EX: https://atelierrgss.wordpress.com/download-page-3/
Class Changing: https://himeworks.com/2013/08/utils-class-changing/
Class Graphics: https://himeworks.com/2013/06/class-graphics/

Agradeço a atenção desde já.
 
Bom dia,

Não sei programar em RGSS3, porem creio que ao alterar a:
Sendo que a primeira parte é onde você chama a função
Código:
#==============================================================================
# Para mudar o sprite da face do battler use o código abaixo.
#==============================================================================
#
# battler_face_name( ACTOR_ID, FIlE_NAME )
#
#==============================================================================

#--------------------------------------------------------------------------
 # * Battler Face Name
 #--------------------------------------------------------------------------
 def battler_face_name(actor_id,face_name = "")
     for actor in $game_party.members
         actor.battler_face_name = face_name if actor.id == actor_id
     end
     refresh_battle_hud
 end 

Creio que se você colocar uma verificação com o $game_actors[actor_id].class_id você conseguira ver qual classe o actor terá, ai só fazer um actor.battler_face para cada classe

Creio que se fizer um padrao no nome dos arquivos de imagem, tipo ActorID_Face.png é o nome que você adicionará no código lá no inicio, ai por exemplo:
actorId =1 seja monk ai se possivel fazer uma concatenção de string você adiciona no nome"face_name" 'monk_' ai o nome que vai para o sistema é monk_01_Face.png.

Não sei se é possível fazer isso no RGSS3.
Outra coisa também que dependendo do Plugin tem alguns termos para alteração e não sei se o HUB EX é possível alterar.
Então me desculpe se tiver falando abobrinha.
 
rorido comentou:
Bom dia,

Não sei programar em RGSS3, porem creio que ao alterar a:
Sendo que a primeira parte é onde você chama a função
Código:
#==============================================================================
# Para mudar o sprite da face do battler use o código abaixo.
#==============================================================================
#
# battler_face_name( ACTOR_ID, FIlE_NAME )
#
#==============================================================================

#--------------------------------------------------------------------------
 # * Battler Face Name
 #--------------------------------------------------------------------------
 def battler_face_name(actor_id,face_name = "")
     for actor in $game_party.members
         actor.battler_face_name = face_name if actor.id == actor_id
     end
     refresh_battle_hud
 end 

Creio que se você colocar uma verificação com o $game_actors[actor_id].class_id você conseguira ver qual classe o actor terá, ai só fazer um actor.battler_face para cada classe

Creio que se fizer um padrao no nome dos arquivos de imagem, tipo ActorID_Face.png é o nome que você adicionará no código lá no inicio, ai por exemplo:
actorId =1 seja monk ai se possivel fazer uma concatenção de string você adiciona no nome"face_name" 'monk_' ai o nome que vai para o sistema é monk_01_Face.png.

Não sei se é possível fazer isso no RGSS3.
Outra coisa também que dependendo do Plugin tem alguns termos para alteração e não sei se o HUB EX é possível alterar.
Então me desculpe se tiver falando abobrinha.
Primeiramente, obrigado pela atenção.

Como alguém que não entende nada de scripts, tive dificuldades de entender exatamente quais passos eu deveria tentar tomar.
 
Primeiramente, obrigado pela atenção.

Como alguém que não entende nada de scripts, tive dificuldades de entender exatamente quais passos eu deveria tentar tomar.

Vamos lá, que isso aqui só parece um bicho de sete cabeças mas na real é algo bem simples.

Primeiramente você quer trocar a face dependendo da classe do actor, correto?

Vamos começar com os arquivos .png na pasta /hud:
Supondo que você tenha o actor 01.
Nome base do arquivo de face dele é 01_face.png
Agora quando o actor01 for da classe Monk o nome do arquivo é: monk_01_face.png
Agora quando o actor01 for da classe Warrior o nome do arquivo é: warrior_01_face.png

Blz agora você tem a base para fazer o código alterar as faces.

Vamos criar um evento para chamar o script de troca de face: battler_face_name( 01, "01_face.png" )
Que esta fazendo com que o actor01 tenha o arquivo base de face 01_face.png

Agora vamos supor que:
id da classe monk é 1
id da classe warrior é 2

Código:
def battler_face_name(actor_id,face_name = "")
     for actor in $game_party.members
#Sendo o id da classe Monk = 1 | Aqui verifica se a classe do actor01 é Monk
        if $game_actors[actor_id].class_id == 1
#Caso a verificação anterior for verdadeira aqui concatena ao nome do arquivo base de face o "monk_" e no final o nome será "monk_01_face.png"
         actor.battler_face_name = "monk_" + face_name if actor.id == actor_id
        end
# Mesma verificação só que para a classe warrior com o id 2
        if $game_actors[actor_id].class_id == 2
         actor.battler_face_name = "warrior_" + face_name if actor.id == actor_id
        end
     end
     refresh_battle_hud
 end

Creio que seja isso que você queira fazer.

Obs: Quando o personagem trocar de classe é necessário que um evento chame o script para troca da face.
 
rorido comentou:
Primeiramente, obrigado pela atenção.

Como alguém que não entende nada de scripts, tive dificuldades de entender exatamente quais passos eu deveria tentar tomar.

Vamos lá, que isso aqui só parece um bicho de sete cabeças mas na real é algo bem simples.

Primeiramente você quer trocar a face dependendo da classe do actor, correto?

Vamos começar com os arquivos .png na pasta /hud:
Supondo que você tenha o actor 01.
Nome base do arquivo de face dele é 01_face.png
Agora quando o actor01 for da classe Monk o nome do arquivo é: monk_01_face.png
Agora quando o actor01 for da classe Warrior o nome do arquivo é: warrior_01_face.png

Blz agora você tem a base para fazer o código alterar as faces.

Vamos criar um evento para chamar o script de troca de face: battler_face_name( 01, "01_face.png" )
Que esta fazendo com que o actor01 tenha o arquivo base de face 01_face.png

Agora vamos supor que:
id da classe monk é 1
id da classe warrior é 2

Código:
def battler_face_name(actor_id,face_name = "")
     for actor in $game_party.members
#Sendo o id da classe Monk = 1 | Aqui verifica se a classe do actor01 é Monk
        if $game_actors[actor_id].class_id == 1
#Caso a verificação anterior for verdadeira aqui concatena ao nome do arquivo base de face o "monk_" e no final o nome será "monk_01_face.png"
         actor.battler_face_name = "monk_" + face_name if actor.id == actor_id
        end
# Mesma verificação só que para a classe warrior com o id 2
        if $game_actors[actor_id].class_id == 2
         actor.battler_face_name = "warrior_" + face_name if actor.id == actor_id
        end
     end
     refresh_battle_hud
 end

Creio que seja isso que você queira fazer.

Obs: Quando o personagem trocar de classe é necessário que um evento chame o script para troca da face.
Dessa vez as coisas pareciam ir bem, mas ao chamar script, ocorre esse erro referente a outro script que também está incluso na demo do Battle Hud EX:

4AYsXD4.png

Se isso se tornar muito problema, acho que é uma alternativa melhor usar um CP's Battle Engine da vida que já puxa a face direto do database, e nesse caso o próprio script da Hime faz com que a troca de faces ocorra sem nenhum passo adicional.
 
Qual HUD você está usando? Fiz testes nas 01_classic e na 02_Gray_Wolf, funcionou normalmente.

Consegue colocar a parte do código que esta dando esse erro pf.
 
Voltar
Topo Inferior