Como adicionar mais slots de equipamento
Primeiramente abra o VXA-OS e entre no Editor de Scripts (F11), abra o script [VS] Configs, na linha ~69 iremos encontrar o seguinte código:
Aqui iremos colocar a quantidade de equipamentos equipáveis, ou seja, slots, nesse caso iremos adicionar mais dois slots de equipamentos, ou seja, iremos mudar o valor de 9 para 11
- Código:
MAX_EQUIPS = 11
Iremos agora para o script [VS] Sprite_Charcter procure por def order_equips (Ctrl+Shift+F)
Como podem ver, ali é indicado já os 9 slots anteriores, iniciados em 0 e terminados em 8, na programação a maioria das linguagens, incluindo Ruby, iniciamos contagem em 0, então o índice final dos equipamentos sempre será o numero total menos um. Complicado? Irei descomplicar agora, iremos adicionar mais dois equipamentos como eu disse antes, um deles será o Cabelo e o outro Asas. Ou seja:
- Código:
# 9 = Cabelo
# 10 = Asas
Agora vem a parte complicada, ali está indicado qual é cada direção dos equipamentos, e como podem ver cada um deles tem uma ordem diferente dependendo da direção, isso é para que os paperdolls tenham a ordem correta de exibição.
Da esquerda para direita está a ordem de qual será desenhado primeiro, todos eles um acima do outro.
O cabelo deve anteceder o Capacete então antes de cada 2 iremos colocar o índice 9, que é referente ao cabelo.
As asas por outro lado, devem estar completamente abaixo de tudo em quase todas as direções, quando o jogador está de costas, então iremos colocar nas três primeiras direções o índice 10 como primeiro elemento, e na ultima direção como o ultimo elemento.
- Código:
case @character.direction
when 2 # Frente
return [10, 3, 5, 9, 2, 7, 6, 8, 1, 0, 4]
when 4 # Esquerda
return [10, 7, 0, 3, 5, 9, 2, 6, 8, 1, 4]
when 6 # Direita
return [10, 1, 3, 5, 9, 2, 7, 6, 8, 0, 4]
when 8 # Costas
return [7, 1, 0, 3, 5, 9, 2, 8, 6, 4, 10]
end
Antes de irmos para [VS] Window_Equip, iremos primeiro para a [VS] Window_Base, nela procure por def draw_paperdolls:
Como podem ver, ali há a mesma coisa que no def order_equips, exceto que é apenas a direção frente, então iremos copiar a direção frente que fizemos anteriormente e substituir naquela linha o conjunto:
- Código:
[10, 3, 5, 9, 2, 7, 6, 8, 1, 0, 4].each do |slot_id|
Há um outro def draw_paperdoll no [VS] Sprite_Party:
Esse é menor pois apenas alguns paperdolls estão sendo exibidos, caso queria adicionar mais algum ali, basta se lembrar que é para direção frente, e deve se estar na ordem correta, iremos adicionar novamente o Cabelo (Índice 9) nessa janela também, novamente antes do capacete:
- Código:
[3, 5, 9, 2, 6, 4].each do |slot_id|
Agora iremos para o mais complicado das alterações, vamos ao [VS] Window_Equip, porém antes de irmos ao ponto devo explicar como ele funciona:
Como todos sabemos, este é o [VS] Window_Equip, agora como ele é feito?
Dentro do código do Window_Equip, há estes três elementos, eles são alguns dos principais, col_max, é o número total de Colunas, ou seja, as 3 colunas que há na imagem acima, mas como a ordem é decidida? Ai entra o def equip_slots:
Como podem ver, mais um conjunto, dessa vez há um pequeno detalhe, o primeiro conjunto é para caso o personagem possa usar duas armas. A ordem decide onde cada equipamento irá aparecer na janela, e onde irá ser equipado, então por lógica, basta colocarmos 9 e 10 após o 4 e já podemos sair equipando os novos slots? Sim, é só isso, porém, existem alguns passos a mais.
- Código:
return [5, 2, 6, 0, 3, 0, 7, 8, 4, 9, 10] if $game_actors[1].dual_wield?
return [5, 2, 6, 0, 3, 1, 7, 8, 4, 9, 10]
Apenas colocar 9 e 10 ali não será o suficiente, os equipamentos estarão sendo equipados na grade logo abaixo das luvas e das botas, o que irá dar problema com o tamanho da janela, podemos simplesmente adicionar mais tamanho a janela e estaria tudo resolvido, mas e se quisermos adicionar mais uma coluna?
Retornaremos então ao def col_max, iremos trocar o 3 por 4. Antes de seguir, vamos ver como estamos indo?
Como podem ver, os novos slots estão funcionando, porém há alguns problemas, primeiro, temos que alterar o quadro abaixo, para comportar novos equipamentos. Editaremos a imagem Equipments.png encontrada na pasta Graphics\System.
Bem melhor entretanto há agora um outro problema, não está mais centralizado.
A centralização é manual, ou seja teremos que achar o valor necessário para deslocar, além de alterar dois valores no código.
Para saber quanto teremos que deslocar para direita, iremos pegar a distancia da borda da esquerda da janela para a borda da esquerda do fundo, Aviso: no editor de imagens da sua preferencia para calcular isso:
Coloque a seleção no pixel ao lado da borda, não acima dela.
Essa distancia no meu deu 62, a distancia do outro lado deu 33, o valor impar já era esperado, pois slot_width é um valor impar, e fizemos 4 colunas de 29 pixels cada, totalizando 117 pixels.
Voltando ao que importa, temos 62 + 33 pixels de bordas, para centralizarmos essa imagem, iremos somar e dividir por 2 esse valor: 62 + 33 = 95 / 2 = 47,5, como não podemos ter um pixel quebrado, iremos arredondar para 47.
Agora iremos subtrair de 62 o valor que achamos, 62-47 = 15
Teremos que recuar 15 pixels para centralizar os slots. Se pegarem o editor de imagens, selecionar toda a area dos slots, e recuarem 15 pixels a esquerda, irão ver que teremos agora 47 e 48 de cada borda, em vez de 62 e 33.
Agora onde iremos inserir esses valores?
Há 3 lugares que devemos alterar os valores, marquei eles com as setas vermelhas, cada um deles iremos subtrair 15 do valor original.
Primeira seta: 62-15 = 47, então iremos trocar o valor 62 por 47, sim esse é o mesmo valor da borda que calculamos antes.
Segunda seta: 50-15=35, iremos trocar 50 por 35.
Terceira Seta: 53-15=38, iremos trocar 53 por 38.
Explicando porque os dois valores abaixo são esses:
50 é 62-12, pois o contents onde o background está sendo desenhado já possui uma borda de 12 pixels, no [RM] Window_Base * o def standard_padding indica esse valor.
Já o 53 é o mesmo valor, acrescentando 3, pois esse valor é a borda que será desenhada cada item:
Os itens são desenhados dentro das caixas, eles tem 24x24px como indicado pela caixa verde.
Com os edits feitos vamos ver como estamos?
Com os edits feitos vamos ver como estamos?
Estamos finalizados, foi tudo que queríamos fazer.
Agora caso queiram posicionar manualmente cada slot, será necessário outro tutorial, esse já esta longo de mais.
Agradecimentos:
Valentine pelo VXA-OS.
Valentine pelo VXA-OS.
LeonM² por fazer esse tutorial.
Qualquer erro ou duvida, comentar no tópico ou deixar no server do VXA-OS.