Skip to content

[PT] Extras Recursivos

Valdir da Costa Júnior edited this page May 12, 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;
  • 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.

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 de nome, e nem de algum modelo visível dentro dele.

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

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".

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 class, assim as características serão aplicadas logo caso a tal class ser escolhida.

Nota: Só é suportado uma categoria por node.

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