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

Mudar Personagem quando estiver em K.O.

Iniciado por [COB], 27/03/2019 às 15:43

Boa tarde, comunidade!

Como já é conhecido, nas versões mais antigas do rpg maker (2000/03), o jogador assume o controle de um único personagem (charset) para se movimentar pelo mapa, não é mesmo? Se uma equipe (party) contar com mais de um personagem, os mesmos só serão vistos ao se acessar o menu do jogo ou ao iniciar uma batalha, correto?  :sera:

Já existem maneiras de se fazer os charsets de todos os integrantes do grupo serem vistos no mapa e seguirem o líder e também criar eventos em que se escolhe qual será a formação do grupo.

Mas o que tem me deixado implicado (e para isso estou tentando dar uma solução), é que quando o personagem principal "morre" (está em K.O), o charset que o jogador continua a movimentar, é o do herói nocauteado!  :fliptable:

O que estou tentando implementar, é um sistema no qual, quando o personagem principal está em K.O., ele seja substituído pelo próximo integrante do grupo que esteja vivo ou em condições de luta (o personagem vivo se tornará o líder do grupo e o charset que o jogador controlará será o do respectivo herói "vivo").

Já obtive algum progresso mas tenho encontrado muitas dificuldades. Criei um evento em processo paralelo mas isso tem causado bastante lag. Principalmente quando dois heróis do grupo estão em K.O. e um terceiro assume a liderança.

Alguém tem alguma idéia de como isto poderia ser feito e gostaria de contribuir?

Obrigado.

Como você postou na área de "Idéias" não entendi se isso é realmente uma dúvida...

Além do mais K.O é apenas um termo abreviado que normalmente é usado em jogos de luta pra quando está termina de fato, nos Side-Battle de Rpg Maker a batalha termina apenas quando todos os personagens estão caídos/mortos.

Como também não tenho idéia de qual Engine você está usando também não tem como ajudar... o que deu pra entender é que é Rpg Maker, mas qual deles não e nem se está usando algum Script.

Opa!

Postei na área de Idéias, pq considerei como um termo amplo e a idéia seria a de criar um sistema de troca de personagens quando o líder estivesse em K.O.

Utilizo as versões 2000/2003, que até onde sei, não permite scripts, apenas programações via commom event

Em caso de vitória, as batalhas podem terminar, sim, com alguns personagens do grupo em K.O.


Isso teria que ser postado na seção de ajuda do 2000/2003 em vez de ideias iniciais, pois se trata de uma dúvida específica da engine.

Voltando ao tópico, você pode fazer isso por eventos comuns. Você remove o personagem morto, e coloca de novo na party, assim ele vai pra última posição automaticamente. :ok:
~ cleanwatersoft.itch.io/ ~
Baixe todos os jogos que eu fiz até hoje gratuitamente

Então está certo, você quer discutir como criar um sistema que faça com que o personagem fique caído fora das batalhas, sendo pelo sistema de Caterpillar, não é dificil, já que usamos variaveis para verificar HP e status dos personagens desde o Rm2k.

Você pode criar um "EVENTO COMUM" que constantemente verifique o HP dos personagens e com Switches memorizar o Grupo dos personagens atual.

Por fim será necessário criar condições que jogue o personagem que morrer para ultima posição do grupo mantendo sempre os "vivos" na liderança.

EVENTO COMUM: Sistema de Status (Ativado por Switch em processo paralelo)
Citar<>Variavel [HP-Actor_Alex] = Alex HP
<>Variavel [HP-Actor_Brian] = Brian HP
<>Variavel [HP-Actor_Laura] = Laura HP
<>Variavel [HP-Actor_Erick] = Erick HP
<>Chamar Evento: Verificar caidos
<>

EVENTO Comuns: Verificar Caidos (Modo Chamar Evento)
Citar<>Condição (If): Switch[Party_Alex] = ON
    <>Condição (If): Variavel [HP-Actor_Alex] = 0
        <>Switch[Morto_Alex] = ON
        <>
    :Exeção
        <>Switch[Morto_Alex] = OFF
        <>
    :Fim
    <>
:Fim
<>Condição (If): Switch[Party_Brian] = ON
    <>Condição (If): Variavel [HP-Actor_Brian] = 0
        <>Switch[Morto_Brian] = ON
        <>
    :Exeção
        <>Switch[Morto_Brian] = OFF
        <>
    :Fim
    <>
:Fim
<>Condição (If): Switch[Party_Laura] = ON
    <>Condição (If): Variavel [HP-Actor_Laura] = 0
        <>Switch[Morto_Laura] = ON
        <>
    :Exeção
        <>Switch[Morto_Laura] = OFF
        <>
    :Fim
    <>
:Fim
<>Condição (If): Switch[Party_Erick] = ON
    <>Condição (If): Variavel [HP-Actor_Erick] = 0
        <>Switch[Morto_Erick] = ON
        <>
    :Exeção
        <>Switch[Morto_Erick] = OFF
        <>
    :Fim
    <>
:Fim
<>

A principio está é a idéia de como "checar" o HP de cada membro do grupo, usei Variaveis pra checar o HP pois fica mais fácil reaproveitar pra outros sistemas, e as Switches para definer quando está morto vai evitar confunsões no Caterpillar.

Se for criar um sistema de reposicionar os personagens mortos é melhor criar no Rpg Maker e postar aqui no tópico, porém não tenho muito tempo pra isto e preciso ter certeza de que era isso mesmo que você explicou no tópico.

Boa tarde!

Obrigado pelo retorno, pessoal   :ok:

Tentar implementar um sistema de troca de personagens caídos automaticamente, junto com o sistema caterpillar, ao meu ver é mais complexo, né.

Além de remover o herói caído e adicioná-lo novamente, seu charset teria que mudar de posição na "fila".

A principio estava pensando em algo mais simples, visualizar apenas o charset do líder no mapa (sem caterpillar). Caso o líder morresse, o próximo herói vivo tomaria a liderança, implicando na mudança do charset. E caso o líder inicial caído, fosse revivido, este retornaria à liderança.

Imagino que tenha que ser algo nesse sentido mesmo, de remover o herói morto e depois adicioná-lo novamente, utilizando forks conditions.

Já comecei a escrever o evento no maker, mas como já disse, por ser um processo que roda em paralelo o tempo todo, tem causado mto lag.

Postarei aqui assim que possível.

Quem sabe não fazemos até um tutorial para isso?!

Mais uma vez, obrigado.

Abraços!

Essas mesmas condições podem ser aplicadas para fazer o Face dos personagens caídos mudar, como no Street Fighter II de consoles 16-Bits.
Mesmo que não se aplique ao sistema caterpillar ainda sim não é díficil, mas toma algum tempo para criar todas as condições.

Se você tiver apenas 4 personagens possíveis durante o jogo todo fica mais pratico, mas se tiver mais tem que fazer com muito cuidado para não gerar Bugs.

28/03/2019 às 17:45 #7 Última edição: 28/03/2019 às 17:47 por CleanWater
CoB, não tem segredo, se for só mudar o gráfico (digamos, a lá Final Fantasy original) do player para o que não morreu em uma luta, fork conditions pra cada personagem em evento comum (parallel proccess) e só.

Algo tipo isso:
@> Conditional Branch: [Samuka] has [Morto] inflicted
  @> Change Party Member: Remove [Samuka]
  @> Change Party Member: Add [Samuka]
  @>
 : Branch End

Basta repetir pra todos os personagens, e agora o personagem que estava "em segundo/terceiro/quarto lugar" aparecerá como o "líder" da party no lugar do que morreu. :ok:
~ cleanwatersoft.itch.io/ ~
Baixe todos os jogos que eu fiz até hoje gratuitamente

CleanWater, o problema é que também tem que verificar se o personagem realmente está no grupo, destá maneira, você removeu e adicionou pra cair pra ultimo.

Na época da JogosRpg eu montei um projeto de ABS com mais personagens, este sistema precisava garantir que o protagonista aparecesse na lista pra ultimo, o mesmo também servia para troca de personagem, e garantir que o ABS não conflitasse, o mesmo principio aconteceria com os eventos do enredo do jogo.

Eu tive que memorizar todos os personagens com Switches e suas posições atuais com Variaveis. No caso de um ABS comum bastaria as Switches, como no exemplo que mostrei.

Então, é só adicionar mais uma fork com isso e botar o de antes dentro dela uai. :ok:
~ cleanwatersoft.itch.io/ ~
Baixe todos os jogos que eu fiz até hoje gratuitamente

Tem toda razão Clean, agora lembrei, como estavamos falando de Caterpillar eu me confundi.
Na época acontecia um BUG no sistema, que deixava o jogo bem confuso.

Citação de: CleanWater online 28/03/2019 às 19:50
Então, é só adicionar mais uma fork com isso e botar o de antes dentro dela uai. :ok:

Desculpa, mas eu não entendi. Eu devo colocar o que dentro de qual fork? Boiei  :derp:

Citação de: CleanWater online 28/03/2019 às 17:45
CoB, não tem segredo, se for só mudar o gráfico (digamos, a lá Final Fantasy original) do player para o que não morreu em uma luta, fork conditions pra cada personagem em evento comum (parallel proccess) e só.

Algo tipo isso:
@> Conditional Branch: [Samuka] has [Morto] inflicted
  @> Change Party Member: Remove [Samuka]
  @> Change Party Member: Add [Samuka]
  @>
 : Branch End

Basta repetir pra todos os personagens, e agora o personagem que estava "em segundo/terceiro/quarto lugar" aparecerá como o "líder" da party no lugar do que morreu. :ok:

Foi dessa maneira que eu fiz primeiramente, CLEANWATER! Mas fica com mto lag.. Tentei usar labels pra resolver isso mas não adiantou mto  :-.-:

Coloque um "Time"/Esperar de 30fps, esse tipo/método de sistema sem intervalo dá lag independente da plataforma/engine.

Você também pode usar um switch pra ativar o evento só quando o personagem estiver na party.
~ cleanwatersoft.itch.io/ ~
Baixe todos os jogos que eu fiz até hoje gratuitamente