🤔 Para Refletir :
"Zzz... Zzzz... Opa! A cutscene já acabou?"
- Delayzado

Trocar gráficos dependendo da switch [Resolvido]

AbsoluteXandy Masculino

Marquês
Membro
Membro
𝓢𝓱𝓲𝓪𝔀𝓪𝓼𝓮 𝓰𝓮𝓽𝓽𝓸 𝓭𝓪 𝔂𝓸!
Juntou-se
04 de Julho de 2015
Postagens
654
Bravecoins
119
Estava pensando como meus jogos atuais tem um filtro natural bem forte, para resolver isso, pensei que uma das soluções seria trabalhar com um "sistema de censura".

A ideia por trás é bem simples, queria saber se existe uma forma prática do jogo apenas mostrar os gráficos censurados quando uma switch for ativa, vamos a um exemplo:

No segundo andar, existe um monstro que é uma guilhotina ensanguentada com um demônio decapitado preso nela jorrando litros de sangue por onde deveria estar a cabeça, com a switch ligada, o jogador veria uma versão do sprite onde a lâmia da guilhotina está limpa e o demônio ainda está com a cabeça no lugar, sem nenhum pingo de sangue (Eu obviamente faria ambos os gráficos).

Eu sei que uma das soluções é fazer dois inimigos, um com o gráfico sem censura e o outro com o gráfico censurado, mas isso faria com que eu tivesse que editar várias páginas de eventos que chamam aquele monstro e talvez até tenha que duplicar mapas pra chamar certinho a versão correta do monstro, o que deixaria os eventos uma bagunça e o jogo ficaria bem menos divertido de trabalhar nele na long run. Em chars isso é bem mais fácil de fazer com 1 página pra cada gráfico, sendo que eu não teria que editar nada dentro do evento em si dependendo do gráfico, o problema taria mais durante as batalhas com os inimigos.

Existe uma forma de chamar um battler especifico pro mesmo inimigo dependendo da switch estar ativa ou não? Agradeço desde já a atenção.
 
AbsoluteXandy comentou:
Estava pensando como meus jogos atuais tem um filtro natural bem forte, para resolver isso, pensei que uma das soluções seria trabalhar com um "sistema de censura".

A ideia por trás é bem simples, queria saber se existe uma forma prática do jogo apenas mostrar os gráficos censurados quando uma switch for ativa, vamos a um exemplo:

No segundo andar, existe um monstro que é uma guilhotina ensanguentada com um demônio decapitado preso nela jorrando litros de sangue por onde deveria estar a cabeça, com a switch ligada, o jogador veria uma versão do sprite onde a lâmia da guilhotina está limpa e o demônio ainda está com a cabeça no lugar, sem nenhum pingo de sangue (Eu obviamente faria ambos os gráficos).

Eu sei que uma das soluções é fazer dois inimigos, um com o gráfico sem censura e o outro com o gráfico censurado, mas isso faria com que eu tivesse que editar várias páginas de eventos que chamam aquele monstro e talvez até tenha que duplicar mapas pra chamar certinho a versão correta do monstro, o que deixaria os eventos uma bagunça e o jogo ficaria bem menos divertido de trabalhar nele na long run. Em chars isso é bem mais fácil de fazer com 1 página pra cada gráfico, sendo que eu não teria que editar nada dentro do evento em si dependendo do gráfico, o problema taria mais durante as batalhas com os inimigos.

Existe uma forma de chamar um battler especifico pro mesmo inimigo dependendo da switch estar ativa ou não? Agradeço desde já a atenção.

Opa, e aí man! Beleza?
Eu não sei se entendi bem, mas vou dizer como EU faria conforme o que entendi.

Se eu entendi bem, existe uma forma simples de fazer: você cria 3 inimigos no data-base: Um com o gráfico SEM NADA (literalmente uma PNG vazia), um com o gráfico do inimigo "horroroso" e outro com o gráfico censurado. Daí, na aba TROOPS, você cria uma tropa para o inimigo INVISÍVEL e cria uma condição nas linhas de comandos para: caso a switch TAL estiver ativa, FORÇAR o inimigo (a PNG vazia) a se "TRANSFORMAR" no inimigo que você quer (ou o censurado ou o normal). Dá até pra colocar alguma animação pra dizer que ele tá "surgindo", ou algo assim. Deu pra entender?

Espero que eu tenha entendido bem e ajudado de alguma forma.
 
Prezada, boa noite!


Infelizmente, a engine não permite isso de maneira natural. Assim como também não permite a animação de inimigos por padrão, logo suspeito que você esteja usando algum script (ou fazendo a batalha por eventos) para animar os inimigos, caso eu esteja correto, informar o script pode ser bem útil para tentar encontrar uma alternativa.

Sei que no MV, pelo plugin do Yanfly, é possível fazer isso. No VX ACE, desconheço.

Ademais, pensando fora da caixa, tive um problema semelhante ao seu, a solução que encontrei foi criar um "extra patch" para ser aplicado no jogo que substitui os arquivos não censurados pelos censurados. Nessa situação, você não dependerá de uma switch (ou de uma mecânica in-game para atrasar a produção), mas sim de um patch para simplesmente substituir os arquivos necessários.

Outra solução seria você mesmo substituir esses arquivos e disponibilizar as duas versões do projeto para download (o que eu não recomendo).


Espero ter ajudado.
Abraços.​
 
Ahoy-

Talvez fique vago, mas eu tentaria fazer da seguinte forma:
No inicio do game (ou no menu do jogo), o cara ativa a switch se o player escolher por  habilitar a censura. Ao fazer isso, já roda um método que altera a imagem do Monstro (id) no jogo.
Tu poderia ter dois métodos um para habilitar a censura e outro para desabilitar. Ficaria mais ou menos assim:

Código:
function censura_on () {
  for monstro in total_de_monstros_database
   grafico_do_battler = "id-ou-nome_monstro_censurado.png"
  end
}
function censura_off (){
  for monstro in total_de_monstros_database
   grafico_do_battler = "id-ou-nome_monstro.png"
  end

No caso, teria que fazer um trabalho pegando no loop (for)  o nome do battler (imagem na pasta) e adicionando o suffix _censurado na string que está dizendo o nome da imagem a ser aplicada. E claro, tu ia usar esse suffix _censurado no arquivo da pasta do teu projeto para as imagens censuradas.

--
Outro método seria só uma função:
Código:
function change_battler (string suffix) {
  for monstro in total_de_monstros_database
   grafico_do_battler = "id-ou-nome_monstro_${suffix}.png"
  end
}

Nesse caso, quando o player via menu selecionasse a censura ligada o desligada, tu só executava essa função passando a string censurado, ou em branco para não censurar.

E no meu pseudo código, ele tá levando em conta que todos os monstros do database teria variação, mas no caso tu poderia fazer uma array com os ids dos monstros afetados pela censura, e só alterar o gráfico deles.
 
Eliyud comentou:
AbsoluteXandy comentou:
Estava pensando como meus jogos atuais tem um filtro natural bem forte, para resolver isso, pensei que uma das soluções seria trabalhar com um "sistema de censura".

A ideia por trás é bem simples, queria saber se existe uma forma prática do jogo apenas mostrar os gráficos censurados quando uma switch for ativa, vamos a um exemplo:

No segundo andar, existe um monstro que é uma guilhotina ensanguentada com um demônio decapitado preso nela jorrando litros de sangue por onde deveria estar a cabeça, com a switch ligada, o jogador veria uma versão do sprite onde a lâmia da guilhotina está limpa e o demônio ainda está com a cabeça no lugar, sem nenhum pingo de sangue (Eu obviamente faria ambos os gráficos).

Eu sei que uma das soluções é fazer dois inimigos, um com o gráfico sem censura e o outro com o gráfico censurado, mas isso faria com que eu tivesse que editar várias páginas de eventos que chamam aquele monstro e talvez até tenha que duplicar mapas pra chamar certinho a versão correta do monstro, o que deixaria os eventos uma bagunça e o jogo ficaria bem menos divertido de trabalhar nele na long run. Em chars isso é bem mais fácil de fazer com 1 página pra cada gráfico, sendo que eu não teria que editar nada dentro do evento em si dependendo do gráfico, o problema taria mais durante as batalhas com os inimigos.

Existe uma forma de chamar um battler especifico pro mesmo inimigo dependendo da switch estar ativa ou não? Agradeço desde já a atenção.

Opa, e aí man! Beleza?
Eu não sei se entendi bem, mas vou dizer como EU faria conforme o que entendi.

Se eu entendi bem, existe uma forma simples de fazer: você cria 3 inimigos no data-base: Um com o gráfico SEM NADA (literalmente uma PNG vazia), um com o gráfico do inimigo "horroroso" e outro com o gráfico censurado. Daí, na aba TROOPS, você cria uma tropa para o inimigo INVISÍVEL e cria uma condição nas linhas de comandos para: caso a switch TAL estiver ativa, FORÇAR o inimigo (a PNG vazia) a se "TRANSFORMAR" no inimigo que você quer (ou o censurado ou o normal). Dá até pra colocar alguma animação pra dizer que ele tá "surgindo", ou algo assim. Deu pra entender?

Espero que eu tenha entendido bem e ajudado de alguma forma.
Agradeço a ajuda, mas infelizmente isso entra na categoria de coisas que eu gostaria de evitar,  a ideia é que até sua versão final, o jogo seja open source, tudo que eu puder deixar menos confuso na forma que o jogo é feito eu farei, isso não só seria quase tão trabalhoso quanto a gambiarra que eu pensei, como também seria muito confuso pra um terceiro quando vice o projeto por dentro.

Obrigado mesmo assim \o

Dobberman comentou:
Prezada, boa noite!


Infelizmente, a engine não permite isso de maneira natural. Assim como também não permite a animação de inimigos por padrão, logo suspeito que você esteja usando algum script (ou fazendo a batalha por eventos) para animar os inimigos, caso eu esteja correto, informar o script pode ser bem útil para tentar encontrar uma alternativa.

Sei que no MV, pelo plugin do Yanfly, é possível fazer isso. No VX ACE, desconheço.

Ademais, pensando fora da caixa, tive um problema semelhante ao seu, a solução que encontrei foi criar um "extra patch" para ser aplicado no jogo que substitui os arquivos não censurados pelos censurados. Nessa situação, você não dependerá de uma switch (ou de uma mecânica in-game para atrasar a produção), mas sim de um patch para simplesmente substituir os arquivos necessários.

Outra solução seria você mesmo substituir esses arquivos e disponibilizar as duas versões do projeto para download (o que eu não recomendo).


Espero ter ajudado.
Abraços.​
Ah, acho que não me expressei bem, mas os inimigos não seriam animados, seriam imagens estáticas mesmo. Atualmente o jogo roda com base no sistema de batalha padrão do Ace (Ao contrário de muitos, eu adoro brincar com a batalha frontal kkkkk), mas com o tempo devo colocar uns add-ons pra corrigir as coisas menores que me incomodam durante os testes.

Eu realmente não tinha pensado pelo lado dos patchs! O jogo não seria encriptado pra facilitar a edição de terceiros, então até mesmo um patch manual não seria o fim do mundo, é algo bem considerável!

Agradeço pelas ideias, a do patch foi realmente bem sólida.

NumPaD comentou:
Ahoy-

Talvez fique vago, mas eu tentaria fazer da seguinte forma:
No inicio do game (ou no menu do jogo), o cara ativa a switch se o player escolher por  habilitar a censura. Ao fazer isso, já roda um método que altera a imagem do Monstro (id) no jogo.
Tu poderia ter dois métodos um para habilitar a censura e outro para desabilitar. Ficaria mais ou menos assim:

Código:
function censura_on () {
  for monstro in total_de_monstros_database
   grafico_do_battler = "id-ou-nome_monstro_censurado.png"
  end
}
function censura_off (){
  for monstro in total_de_monstros_database
   grafico_do_battler = "id-ou-nome_monstro.png"
  end

No caso, teria que fazer um trabalho pegando no loop (for)  o nome do battler (imagem na pasta) e adicionando o suffix _censurado na string que está dizendo o nome da imagem a ser aplicada. E claro, tu ia usar esse suffix _censurado no arquivo da pasta do teu projeto para as imagens censuradas.

--
Outro método seria só uma função:
Código:
function change_battler (string suffix) {
  for monstro in total_de_monstros_database
   grafico_do_battler = "id-ou-nome_monstro_${suffix}.png"
  end
}

Nesse caso, quando o player via menu selecionasse a censura ligada o desligada, tu só executava essa função passando a string censurado, ou em branco para não censurar.

E no meu pseudo código, ele tá levando em conta que todos os monstros do database teria variação, mas no caso tu poderia fazer uma array com os ids dos monstros afetados pela censura, e só alterar o gráfico deles.
Opa, agradeço pela ajuda!

Eu acho que entendi a lógica por trás, mas não entendi exatamente como aplicar. (Pode parecer simples por fora, mas sou um pixel artist, em questão de scripts o máximo que faço é editar algumas coisas com base em lógica e muita tentativa e erro) Se puder dar uma voltada de forma mais detalhada, estaria muito feliz em tentar!
 
[member=19]NumPaD[/member] Entendi seu raciocínio, mas acho que tem um jeito bem mais simples que é alterar justamente a forma como é calculada a propriedade battler_name, ao invés de sobrescrever ela pra todo mundo do database.

Isto é:
Código:
PERVERT_SWITCH = 34

class Game_Battler
  alias original_battler_name battler_name
  def battler_name
    ($game_switches[PERVERT_SWITCH] ? '' : 'censored_') + original_battler_name
  end
end

[member=126]AbsoluteXandy[/member] pode checar se isso faz o que você precisa?

O script funciona ativando uma switch que você configura ali na primeira linha: quando estiver ativada, o gráfico dos inimigos muda para um arquivo com o mesmo nome do original, mas com um "censored_" antes.
 
Brandt comentou:
[member=19]NumPaD[/member] Entendi seu raciocínio, mas acho que tem um jeito bem mais simples que é alterar justamente a forma como é calculada a propriedade battler_name, ao invés de sobrescrever ela pra todo mundo do database.

Isto é:
Código:
PERVERT_SWITCH = 34

class Game_Battler
  alias original_battler_name battler_name
  def battler_name
    ($game_switches[PERVERT_SWITCH] ? '' : 'censored_') + original_battler_name
  end
end

[member=126]AbsoluteXandy[/member] pode checar se isso faz o que você precisa?

O script funciona ativando uma switch que você configura ali na primeira linha: quando estiver ativada, o gráfico dos inimigos muda para um arquivo com o mesmo nome do original, mas com um "censored_" antes.
"Pervert Switch", não dá pra esconder a verdade dos amigos, né?

Antes de qualquer coisa, obrigado pela atenção e pela ajuda.

E sim, funciona perfeitamente! O problema mesmo é que nem todos os inimigos tem uma versão censurada (Alguns designs são bem inofensivos, tipo um Slime clássico ou um pássaro psíquico levitando uma espada), aí quando você vai enfrentar um desses sem a switch ativa, o jogo simplesmente crasha por ele não ter o gráfico correspondente na pasta.

Sabe uma forma simples de separar os inimigos no qual esse script se aplica? Tipo uma linha com o ID dos monstros no database ou algo do tipo.
 
AbsoluteXandy comentou:
"Pervert Switch", não dá pra esconder a verdade dos amigos, né?

Antes de qualquer coisa, obrigado pela atenção e pela ajuda.

E sim, funciona perfeitamente! O problema mesmo é que nem todos os inimigos tem uma versão censurada (Alguns designs são bem inofensivos, tipo um Slime clássico ou um pássaro psíquico levitando uma espada), aí quando você vai enfrentar um desses sem a switch ativa, o jogo simplesmente crasha por ele não ter o gráfico correspondente na pasta.

Sabe uma forma simples de separar os inimigos no qual esse script se aplica? Tipo uma linha com o ID dos monstros no database ou algo do tipo.

Sem julgamentos, só fatos ahsuahsuahs

Mais legal que uma configuração, dá pra fazer o script pegar o gráfico censurado só quando ele existir:
Código:
PERVERT_SWITCH = 34

class Game_Battler
  alias original_battler_name battler_name
  def censored?
    not ($game_switches[PERVERT_SWITCH] or Dir.glob("Graphics/Battlers/#{censored_battler_name}.*").empty?)
  end
  def censored_battler_name
    'censored_' + original_battler_name
  end
  def battler_name
    return censored_battler_name if censored?
    return original_battler_name
  end
end

Não consegui testar, mas é pra ser por aí hahaha.
 
Brandt comentou:
Sem julgamentos, só fatos ahsuahsuahs

Mais legal que uma configuração, dá pra fazer o script pegar o gráfico censurado só quando ele existir:
Código:
PERVERT_SWITCH = 34

class Game_Battler
  alias original_battler_name battler_name
  def censored?
    not ($game_switches[PERVERT_SWITCH] or Dir.glob("Graphics/Battlers/#{censored_battler_name}.*").empty?)
  end
  def censored_battler_name
    'censored_' + original_battler_name
  end
  def battler_name
    return censored_battler_name if censored?
    return original_battler_name
  end
end

Não consegui testar, mas é pra ser por aí hahaha.
MASK TOO OP

Acabei de fazer os testes, funciona certinho. Obrigadão man, tu é um fofo <3

Agradeço também a todo mundo que tentou ajudar ou deram sugestões, é sempre muito legal ver a comunidade se juntando pra ajudarem uns aos outros. Mais um problema resolvido!
 
Voltar
Topo Inferior