Skip to content

[PT] Extras Recursivos

Valdir da Costa Júnior edited this page Jun 15, 2018 · 31 revisions

Novo sistema de extras (variações)

Utilidade

Antes de prosseguir não deixe de ler a Introdução.

A atual sistema de variação de peças de veículos do GTA SA é muito limitado. Esta função visa eliminar estes limites.
Funciona em um sistema totalmente novo (sem substituir o atual sistema de extras do jogo), proporcionando muitas vantagens.

Pontos fortes:

  • Quantidade ilimitada de peças extras (originalmente é somente 6);
  • Extras em literalmente qualquer parte do veículo, podendo variar portas, para-choques, rodas etc, incluindo danos funcionais. Isto possibilita a criação de diferentes veículos no mesmo arquivo;
  • Sistema recursivo: Quando um extra ser selecionado, ele selecionará um filho, e assim por diante, criando um "agrupamento" onde um extra só aparecerá caso o outro aparecer;
  • Você pode definir quantos extras de cada agrupamento serão selecionados;
  • Possibilidade de adicionar extras também em trens (originalmente é possível em todos os tipos de veículos, exceto trens);
  • Pode ser usado em conjunto com o sistema de Características para criar variar características de um veículo.

Pontos ruins:

  • Caso o jogador que baixar o seu mod de veículo não ter VehFuncs instalado, todos os extras ficarão visíveis por padrão.
  • Utilizar extras em para-choques ou rodas, ao instalar uma peça tuning no para-choque ou na roda, deletará aqueles extras.

Básicos

A sintaxe básica é a seguinte: A imagem acima é auto-explicativa e já ensina todo o básico de como funciona.
Tenha a nota de que o nome "extra" é só exemplo, pode ser qualquer outra coisa.

Antes de prosseguir quero deixar claro que o sistema é muito flexível e conveniente, você não precisa usar muito a memória, inclusive, os nomes das funções podem ser escritos em qualquer ordem e como você bem entender. De fato, cada node nem precisa ter algum modelo visível dentro dele.

Se você quer fazer variações de roda, você precisa também ler sobre Rodas Variáveis. Veja uma imagem

Gatilho 'f_extras'

f_extras é um "gatilho", ou seja, um node que representa o ponto inicial; ele sempre será visível, no entanto, não precisa existir nenhum modelo dentro dele, pode ser simplesmente um dummy (ou seja, um node vazio).
Todos os filhos do f_extras serão considerado "extras". Tenha a nota de que eles podem ter absolutamente qualquer nome, não precisam se chamar "extras" como na imagem acima.

Sufixo ':'

Leia isso como "selecione X filhos", por exemplo :2 selecionará 2 filhos; :1 selecionará 1 filho (o que é o padrão); :0 pode ser que selecione 1, ou nenhum.
Como dito, se você não usar o : por padrão selecionará 1 filho, mas se o pai tem somente 1 filho? Então terá 50% de chances do filho ser selecionado. Para forçar que o filho único sempre seja selecionado (100% de chance), use o sufixo :1 no pai. Como dito, você pode usar :0 para criar uma chance de selecionar nenhum filho. Por exemplo, há 3 filhos e você quer que selecione um deles, mas também deseja que tenha uma chance de selecionar nenhum deles, basta usar :0 no pai.
Mas provavelmente o que você mais usará é o :0+ ou :1+. Para entender, o + no fim quer dizer literalmente "aleatorize até a quantidade máxima", ou seja, se você usar :0+, selecionará nenhum, ou um, ou alguns, ou todos os filhos! Assim como :1+ selecionará pelo menos um, ou alguns, ou todos. Em resumo, o número após o : quer dizer "selecione no mínimo isto" e o + quer dizer "...aleatoriamente até o máximo possível".

Danos (damage)

É possível usar os extras dentro de peças danificáveis, como bump_front_dummy, basta adicionar normalmente dentro dele e incluir _ok ou _dam no fim do nome da peça extra conforme necessário.
É importante lembrar que ainda é necessário haver as peças de damage originais. Ou seja, neste exemplo, ainda é necessário que o seu carro tenha algum bump_front_ok e bump_front_dam senão o damage será completamente desativado, mas não coloque-os dentro do f_extras pois não funcionará corretamente. Veja aqui um exemplo correto de uso.

Características

É possível utilizar o sistema de Características junto com extras, assim possibilitando o veículo ter certas características baseadas em quais extras foram selecionados.

No exemplo acima,

  • O mod selecionará aleatoriamente o extra gás ou carga;
  • Caso selecionar o gás, também aplicará um ID personalizado ao motorista (190) configurado no drv=190 ("drv" de "driver") e a paintjob 1 configurado no pj=1 (de "paintjob"), que seria uma pintura de caminhão de gás;
  • E o que é aquele :2? É quantos extras filhos serão selecionados;
  • Neste caso, os filhos do extra gás são botijões e interior, selecionará os 2;
  • botijões tem 2 extras que contém variações de botijões, será selecionado e aparecerá 1 deles;
  • Interior tem 3 extras e está configurado para selecionar 2 extras (:2), portanto selecionará 2 dos 3: revistas e/ou garrafas e/ou pédecabra. Caso selecionar garrafas, também há chance de selecionar copo;
  • E caso não ser selecionado o gás? Será selecionado carga;
  • Selecionando carga, o script aplicará um motorista personalizado de ID 160 ou 161;
  • E temos 2 extras: móveis e entulho, onde caso for selecionado entulho, aplicará entre 7 e 9 níveis de sujeira ("drt", de "dirty" em inglês) (a configuração vai de 0 à 9).

Se você achou confuso, tudo bem, no fim da página há um exemplo mais fácil, mas é também importante que você entenda o básico deste.

Leia mais sobre Características.

Seleção de categoria

Certo, aprendemos a colocar extras em algum lugar do carro, mas como se comunicar entre diferentes partes do carro?
Afinal, por exemplo, queremos que caso uma escada aparecer no teto (chassis) apareça adesivo nas portas.


No exemplo acima temos f_class que selecionará unofirma ou unovelho. Caso unofirma ser selecionado, será definido a categoria [unofirma].
Ao processar os extras da porta, poderá ser aplicado o adesivofirma[unofirma]. Tenha a nota de que no exemplo há uma chance de 50% do adesivo ser aplicado ou não. Se você quer forçar que o adesivo sempre apareça caso a categoria [unofirma] tenha sido selecionada, no f_extras_ok e f_extras_dam, deixe f_extras:1_ok e f_extras:1_dam, assim sempre selecionará, como explicado acima.

É possível criar diferentes versões/modelos do carro dentro do mesmo .dff, como no exemplo:

Você também pode colocar características logo no nome da categoria/class, assim as características serão aplicadas logo caso a tal class ser escolhida.

É também possível fazer seleção de várias categorias em vez de somente uma.
Perceba que você pode usar : e + no f_class.
O _reset faz o que o nome diz: limpa todas as categorias antigas para selecionar somente as novas.

Importante:

  • Só é suportado uma categoria por node: peca[class1][class2] está errado.
  • Os nodes são processados de cima para baixo, portanto a seleção de categoria deve ficar em cima.
  • É necessário que o node tenha algum nome em vez de somente o nome da categoria. Por exemplo [exemplo] é errado; peca[exemplo] é certo, até mesmo _[exemplo] e 1[exemplo] estão certos.

E o que acontece se termos irmãos de mesma categoria?
Caso exista 2 nodes irmãos marcados com a mesma categoria, o funcionamento de escolha dos extras será exatamente o mesmo entre eles. No entanto, caso você definiu o sufixo ":" como um número maior do que o total de irmãos, primeiramente será selecionado entre os irmãos da mesma categoria, e em seguida selecionará normalmente os nodes que sobrou que não tenham categoria (bem conveniente, não?).

Veja um último exemplo semelhante ao que vimos antes. Dentro do ZModeler:

Exemplos

Trator + Carreta

Utiliza o sistema de extras. Na carreta é um ótimo exemplo de :1+.
Download

Clone this wiki locally