Fórum Lost Gamer

Versão completa: Modificando com colocáveis
Esta é uma versão reduzida do nosso conteúdo. Ver versão completa com o formato adequado.
Neste tutorial, você aprenderá como adicionar suporte ManureSystem ao seu mod colocável.

O que eu preciso?

Para executar com sucesso as etapas exigidas neste tutorial, você precisará dos seguintes programas:
  • Editor de texto ([Para ver os links, por favor se registre no fórum aqui ou faça seu login aqui], [Para ver os links, por favor se registre no fórum aqui ou faça seu login aqui] ou outro programa equivalente...)
  • [Para ver os links, por favor se registre no fórum aqui ou faça seu login aqui] ou software 3D que suporta o GIANTS Exporter (Maya, blender ...)
  • Conexão com a Internet para baixar fontes do GitHub

Para colocáveis (não colocáveis construídos no mapa), você também precisa de um script extra para verificar se o ManureSystem existe. Você precisará obter uma cópia do arquivo ManureSystemAvailabilityCheck.lua mais recente, que pode ser encontrado no repositório [Para ver os links, por favor se registre no fórum aqui ou faça seu login aqui].

Se o seguinte link de [Para ver os links, por favor se registre no fórum aqui ou faça seu login aqui] não funcionar, você pode seguir as seguintes etapas sobre como baixar o arquivo ManureSystemAvailabilityCheck.lua:

  1. Vá para a pasta docs localizada no diretório raiz.
  2. Clique no arquivo ManureSystemAvailabilityCheck.lua.
  3. Uma janela será aberta com o arquivo de script.
  4. Clique no botão Raw ao lado do botão Blame e o arquivo será aberto no formato RAW.
  5. Clique com o botão direito e clique em salvar como (ou pressione ctrl - s no teclado) e salve o arquivo no local preferido em seu mod.

LEMBRE-SE: Renomeie a extensão do arquivo para .lua e não salve como .txt!

Adicionando o ManureSystemAvailabilityCheck

AVISO: você pode pular esta etapa quando não estiver lidando com um mod autônomo (ou seja, com placáveis integrados)
Citar:Para iniciar esta etapa, você precisa ter concluído a parte O que eu preciso ?.

Nesta parte do tutorial, vamos adicionar uma verificação de disponibilidade, isso é necessário para garantir que o usuário ativou o mod ManureSystem a fim de tornar nosso colocável totalmente funcional! Se o ManureSystem não estiver ativado/disponível, o ManureSystemAvailabilityCheck.lua removerá seu colocável da loja para evitar possíveis erros para o usuário final.

Terceirizar a verificação de disponibilidade

Na parte anterior do tutorial, você baixou o script ManureSystemAvailabilityCheck, nesta parte vamos integrá-lo ao seu mod.

Primeiro, você precisará abrir o modDesc.xml do seu mod. Teremos que adicionar a verificação de disponibilidade à tag <extraSourceFiles> do seu modDesc. Se o seu mod já o tiver, basta adicionar a entrada extra <sourceFile>.

Isso resultará em algo como:
<extraSourceFiles>
    <sourceFile filename="ManureSystemAvailabilityCheck.lua"/>
</extraSourceFiles>

O nome do arquivo deve ser a localização exata do arquivo ManureSystemAvailabilityCheck.lua que você baixou anteriormente. Nesse caso, ele é carregado do diretório raiz do mod.

Terminamos no modDesc, seu mod agora faz a verificação de disponibilidade.

Adicionando conectores

Para poder adicionar conectores, você deve certificar-se de que seu tipo de colocação é:
  • husbandry - vanilla colocável à criação de animais.
  • bgaPlaceable - tipo vanilla colocável para bga
  • FS19_manureSystem.manureSystemStorage - script de armazenamento no sistema de esterco

Como você pode configurar o FS19_manureSystem.manureSystemStorage será tratado no capítulo abaixo.

Tipos de conectores

Os conectores são necessários para informar, por exemplo, mangueiras ou fillarms onde conectar. Simplesmente disse que faz a ponte entre as funções.

Atualmente, o mod suporta 4 tipos de conectores:
  • COUPLING (mangueira de acoplamento de esterco)
  • COUPLINGFERTILIZER (mangueira de acoplamento de fertilizante)
  • DOCK (funil)
  • OPTICAL (como o nome já sugere não funcional, apenas ótico)

Acoplamentos

Em nosso primeiro exemplo, veremos como adicionar um tipo de conector COUPLING ao nosso colocável, este exemplo também funciona para o tipo COUPLINGFERTILIZER.

Adicionando o nó do conector

Abra o XML do colocável e adicione a tag <manureSystemConnectors> como filha da tag placeable.

NOTA: ao lidar com os colocáveis do BGA, o <manureSystemConnectors> precisa ser filho da tag <bga></bga> como:
<bga>
...
    <manureSystemConnectors>
    ...
    </manureSystemConnectors>
...
</bga>

Nossa etapa resultará nisso:
<manureSystemConnectors>
..
</manureSystemConnectors>

Substitua os .. (pontos) por uma entrada de conector. Para nossa primeira entrada de conector, usaremos um grupo de transformação de referência existente do arquivo i3d. Para isso abrimos o arquivo i3d e copiamos o índice do nó desejado.

NOTA: os colocáveis não funcionam com mapeamentos i3d, então temos que usar Index Path neste caso!

[Imagem: indexOfConnector.png]

Agora que encontramos nosso nó e copiamos o índice, temos que adicionar uma entrada de conector à tag <manureSystemConnectors>.

O resultado será mais ou menos assim:
<manureSystemConnectors>
    <connector type="COUPLING" node="1|1|2|1"/>
</manureSystemConnectors>

Note que eu removi 0> do índice, isso não é usado nos colocáveis em geral!

Isso informa ao mod ManureSystem que o nó no índice 1|1|2|1 é um COUPLING para mangueiras de esterco.

Também podemos usar a opção de dizer ao ManureSystem para criar um nó (como mencionado em outros tutoriais).

DICA: Por meio de todo o mod, você tem a opção de criar um nó com o atributo createNode ou a opção de se referir a um nó existente com o atributo node.

Será mais ou menos assim:
<manureSystemConnectors>
    <connector type="COUPLING" linkNode="0|3" createNode="true" position="3.7 0.5 0.85" rotation="0 90 0" />
</manureSystemConnectors>

Isso criará um nó COUPLING vinculado ao nó no index 0|3 com a posição e rotação fornecidas.

IMPORTANTE

Se você estiver experimentando uma desconexão direta ou comportamento de arrastamento da mangueira ao tentar conectá-la ao seu objeto, terá que adicionar uma entrada rootNode à tag <manureSystemConnectors>.

Este rootNode é o nó físico básico (requer corpo rígido) necessário para lidar com conexões de mangueiras. Portanto, use, por exemplo, o nó de corpo rígido fechado que você pode encontrar para o nó de conector definido.

Observe que rootNodes em escala (ou nós físicos em geral) não funcionarão! Portanto, verifique se o nó de sua escolha tem uma escala de 1 em todos os eixos.

Quando adicionamos um rootNode ao exemplo acima, isso resultaria no seguinte:
<manureSystemConnectors rootNode="0|1">
    <connector type="COUPLING" linkNode="0|3" createNode="true" position="3.7 0.5 0.85" rotation="0 90 0" />
</manureSystemConnectors>

DICA: para verificar se o nó está na posição correta, sugiro que você olhe no jogo e use o comando do console msToggleDebug, que irá destacar todos os nós do conector usados.

[Imagem: msToggleDebug.png]

Adicionar animações de conector

Os tipos de conectores COUPLING e COUPLINGFERTILIZER possuem suporte de animação para travamento e abertura do fluxo de dejetos. Isso é feito nas entradas de AnimatedObjects.

** Por causa do tutorial, presumo que você saiba como adicionar entradas do AnimatedObject.

Para animações de objeto, o conector oferece suporte a duas entradas:
  • lockAnimationIndex: int, por exemplo 1 este é o índice da entrada animatedObject no xml
  • manureFlowAnimationIndex: int, por exemplo 1 este é o índice da entrada animatedObject no xml**

Para o exemplo, adicionei duas entradas de animação simples que giram um nó em um determinado keyFrame.

Eles têm a seguinte aparência (NÃO COPIE AS CEGAS):
<animatedObjects>
    <animatedObject>
        <animation duration="0.25">
            <part node="1|1|1">
                <keyFrame time="0.0" rotation="0 0 0"/>
                <keyFrame time="1" rotation="0 0 -125"/>
            </part>            
        </animation>
    </animatedObject>
    <animatedObject>
        <animation duration="0.25">
            <part node="1|1|3">
                <keyFrame time="0.0" rotation="0 0 0"/>
                <keyFrame time="1" rotation="0 0 90"/>
            </part>
        </animation>
    </animatedObject>
</animatedObjects>

[Imagem: countingAnimations.png]

Acima, temos duas entradas de animationObject que podemos contar como 1 e 2 (você pode simplesmente contar as tags </animatedObject> (final))

Para acionar a animação em nossos conectores, temos que definir o índice que acabamos de contar com o atributo lockAnimationIndex ou manureFlowAnimationIndex. Isso resultará na **seguinte entrada.
<manureSystemConnectors>
    <connector type="COUPLING" node="1|1|2|1" lockAnimationIndex="1" manureFlowAnimationIndex="2"/>
</manureSystemConnectors>

No exemplo acima, o animatedObject com índice 1 será reproduzido para a animação de bloqueio e o animatedObject com índice 2 será reproduzido para o fluxo de estrume.

NOTA: lockAnimationIndex funciona com e sem manureFlowAnimationIndex, mas manureFlowAnimationIndex requer o lockAnimationIndex!

Configurando opções de conector adicionais

Para objetos colocáveis, existem dois atributos adicionais que você pode definir nos conectores.

Para o tipo ACOPLAMENTO e ACOPLAMENTO, você tem a opção de definir:

inRangeDistance int, por exemplo 1.8 Isso determina a distância até que a mangueira possa ser conectada (útil para aumentar as possibilidades de conexão/desconexão em locais de difícil acesso)
isParkPlace: true/false Sinaliza se o conector for usado apenas para estacionar a mangueira.

Adicionando suporte ManureSystemStorage

Citar:Antes de continuar, certifique-se de terminar de adicionar ManureSystemAvailabilityCheck em Adicionando ManureSystemAvailabilityCheck.

Abra seu arquivo xml colocável novamente.

Para carregar o ManureSystemStorage, você terá que definir o seguinte placeableType.
<placeableType>FS19_manureSystem.manureSystemStorage</placeableType>

O ManureSystemAvailabilityCheck adicionado garantirá que o mod não entre em conflito quando o ManureSystem não for carregado.

Para configurar o mínimo necessário para o armazenamento, você precisará adicionar a entrada .

As opções para a entrada de armazenamento são:
  • nó: string, por exemplo 1|2 O índice do nó do armazenamento.
  • fillTypeCategories: string, por exemplo slurryTank As categorias de filltype com suporte.
  • fillTypes: string, por exemplo liquidManure O fillType suportado (SOMENTE NECESSÁRIO QUANDO VOCÊ DESEJA ESPECIFICAR FILLETYPES ESPECÍFICOS)
  • capacityPerFillType: int, por exemplo 500 A capacidade de armazenamento.

Também precisamos de uma entrada <trigger> para mostrar as informações do jogador em nosso armazenamento. Esta é simplesmente uma referência de nó para o gatilho em seu mod i3d.

Certifique-se de que o trigger esteja marcado como trigger na guia de rigid body e que o gatilho tenha uma collision mask (HEX) de 100000.

E a entrada de exemplo será:
<manureSystemStorage>
    <trigger node="1|4"/>
    <storage node="0" fillTypeCategories="slurryTank" capacityPerFillType="1718000"/>
</manureSystemStorage>

Se você deseja adicionar um plano de preenchimento ao seu armazenamento, você pode configurar o seguinte na entrada <fillPlane>.
  • nó: string, por exemplo 1|2 O índice do nó do plano visível.
  • planeMinY: float, por exemplo -4.1 A translação Y mínima que o avião pode viajar.
  • planeMaxY: float, por exemplo 0,5 A translação Y máxima que o avião pode viajar.
  • planeOffsetY: float, por exemplo 0.1 O deslocamento Y da translação para que os braços de enchimento estejam dentro do alcance.

E a entrada de exemplo com o plano de preenchimento será:
<manureSystemStorage>
    <fillPlane node="1|2" planeMinY="-3.6" planeMaxY="0.28"/>
    <storage node="0" fillTypeCategories="slurryTank" capacityPerFillType="1718000"/>
</manureSystemStorage>

O exemplo acima adicionará a marca do nó no índice 1|2 como plano visível que está na translação Y -3,6 quando vazio e na translação Y 0,28 quando completamente cheio.

O armazenamento também possui algumas opções que podemos configurar para o mixer opcional.
  • hasMixer: true/false Define se o armazenamento tem um mixer
  • mixPerSecond: int, por exemplo 150 A quantidade de litros que pode misturar por segundo.

Quando o hasMixer é definido como true, temos a opção de adicionar sons e Nodes de animação para isso, isso deve ser conhecido a partir de implementações de vanilla, então não vou a fundo.

Uma entrada manureSystemStorage completa seria semelhante a esta:
<manureSystemStorage hasMixer="true" mixPerSecond="150">
    <fillPlane node="1|2" planeMinY="-3.6" planeMaxY="0.28" detectionNode="1|3"/>
    <storage node="0" fillTypeCategories="slurryTank" capacityPerFillType="1718000"/>
    <trigger node="1|4"/>
    <animationNodes>
        <animationNode node="2|0" rotSpeed="-2700" rotAxis="1" turnOnFadeTime="2" turnOffFadeTime="5"/>
    </animationNodes>
    <sounds>
        <mix template="FORAGE_WAGON_01" linkNode="2"/>
    </sounds>
</manureSystemStorage>

O exemplo acima inclui sons e nós de animação para o mixer.