-
Notifications
You must be signed in to change notification settings - Fork 4
[PT] Extras Recursivos
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.
- 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.
- 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.
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.
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.
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".
É 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
oucarga
; - Caso selecionar o
gás
, também aplicará um ID personalizado ao motorista (190) configurado nodrv=190
("drv" de "driver") e a paintjob 1 configurado nopj=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ãobotijões
einterior
, 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/ougarrafas
e/oupédecabra
. Caso selecionargarrafas
, também há chance de selecionarcopo
; - E caso não ser selecionado o
gás
? Será selecionadocarga
; - Selecionando
carga
, o script aplicará um motorista personalizado de ID 160 ou 161; - E temos 2 extras:
móveis
eentulho
, onde caso for selecionadoentulho
, 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.
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. Também lembre-se que os nodes são processados de cima para baixo, portanto a seleção de categoria deve ficar em cima.
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:
Utiliza o sistema de extras. Na carreta é um ótimo exemplo de :1+
.
Download