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

Falha no Khas Message System

Iniciado por Corvo, 21/03/2017 às 23:28

21/03/2017 às 23:28 Última edição: 22/03/2017 às 14:14 por Alisson
Olá pessoal, indo direto ao ponto: Estou usando o Khas Message System, script que altera completamente o "Mostrar Mensagem" do projeto. Além dos comandos básicos das mensagens  do Ace, o script inclui outros para incrementar o visual e etc. Porém, alguns dos comandos básicos estão com um erro, e gambiarra nenhuma que tentei resolveu. Veja o erro:

Spoiler
[hs width=320 height=240]http://i.imgur.com/EpI2IDg.png[/hs]
[close]

Ele acontece sempre que o comando \n[X] é utilizado, como no exemplo abaixo. Os comandos de troca de cor são alterações do script e funcionam perfeitamente.

Spoiler
[hs width=320 height=240]http://i.imgur.com/6ewJ2jZ.png[/hs]
[close]

A linha do script em questão, que aparece no erro é a seguinte:

Spoiler
[hs width=320 height=240]http://i.imgur.com/UolShDx.png[/hs]
[close]

Não estou usando nenhum outro script que altere as Mensagens, Fonte (O próprio KMS altera), Menu ou afins. E só pra constar, os personagens estão devidamente declarados, as SE's que o sistema utiliza copiadas e tudo certo com a definição das cores. Alguma ideia de como consertar? Mesmo que na gambiarra? De toda forma, obrigado pela atenção o/

Vou ver o problema e assim que tiver um resultado, te aviso.

22/03/2017 às 00:24 #2 Última edição: 22/03/2017 às 00:27 por Alisson
Encontrei o problema de cara.
Bom, para explicar, o script do Khas substitui a classe da janela de mensagens inteira (que herda de Window_Base), para uma classe que herda da classe Sprite (que é a classe usada para mostrar imagens, em rgss).
Dentro dessa classe, ele tentou simular todos os métodos da classe original da janela de mensagens, porém ele acabou esquecendo de um detalhe pequeno, porém importante.

Na hora de substituir os caracteres \n[id] pelo nome do personagem de número id, ele usou um método chamado actor_name.
Acontece que esse método é originalmente da Window_Base, e ele não criou esse método dentro da classe dele, então... ocorre o bug.

Creio que este deva ser um problema que tenha passado despercebido pelo Khas, pois é um erro de verdade no script.
Se alguém puder entrar em contato com ele pra avisar...

Agora a solução é o seguinte:

Vá na linha 705 do script Khas Message System e substitua:
result.gsub!(/\eN\[(\d+)\]/i) { actor_name($1.to_i) }

Por isso:
result.gsub!(/\eN\[(\d+)\]/i) { $game_actors[$1.to_i].name }


Deve ficar assim:
Spoiler
[close]

Se o erro acontecer com o party_member_name ali embaixo, basta substituir ele por:
result.gsub!(/\eP\[(\d+)\]/i) { $game_party.members[$1.to_i].name }

Funcionou perfeitamente, sr. [user]Alisson[/user]. Muito obrigado.
Curioso como umas poucas palavras esquecidas causam um errinho deste no sistema.