Modificações:Guia do Modder/Teste e Solução de Problemas

Fonte: Stardew Valley Wiki
Revisão em 04h21min de 29 de outubro de 2022 por LokKol (discussão | contribs) (→‎Other issues: traduzido)
Saltar para a navegação Saltar para a pesquisa
Robin building.png
“Ainda tenho muito trabalho a fazer”
— Robin

Tradução incompleta

Este artigo ou seção não foi completamente traduzido para o português. Você está convidado a ajudar na sua construção editando-o
Última edição por LokKol em 2022-10-29 04:21:47.

Creating SMAPI mods SMAPI mascot.png


Modificações:Índice

This page helps you test your mods and solve common issues. For issues using mods, see Modding:Player Guide/Troubleshooting.

Teste o mod

Teste básico

Fazer um teste é bem simples pra maioria dos mods:

  1. Clique em Compilação > Recompilar solução (Visual Studio) ou Compilação > Compilar tudo (MonoDevelop).
  2. Certifique-se de não ter erros de compilação, e seu mod será copiado para sua pasta Mods.
  3. Teste o mod dentro do jogo.
  4. Certifique-se de que não há erros ou avisos para seu mod no console do SMAPI.

No geral, se um mod funciona em uma plataforma então ele irá se sair bem em outras.

Testando no Multijogador

Você pode testar mods multijogador no mesmo computador, ao iniciar duas instacias do jogo:

  1. Prepare o jogador um:
    1. Inicie o SMAPI normalmente
    2. Na tela de titulo: clique em coop, e então em host.
    3. Inicie uma nova fazenda (a menos que você já tenha criado uma). Certifique-se de ajustar as 'cabanas iniciais' para ao menos uma (you precisará de uma cabana extra por jogador)
  2. Prepare o jogador dois:
    1. Inicie o SMAPI novamente (Isso irá automaticamente criar uma instancia separada)
    2. Na tela de titulo: clique em coop, e então em entrar em jogo LAN
    3. Deixe a caixa Insira o IP...' vazia e clique em OK.

Testando em todas as plataformas

Para mods complexos, você talvez precise testar seu mod em todas as plataformas. O jogo é quase o mesmo no Linux/Mac, sendo assim, você terá de testar seu mod apenas duas vezes: uma vez no Windows, e a outra no Linux ou Mac. Você pode fazer isso testando uma versão no seu computador, e a outra em uma maquina virtual.

Se o seu computador é Windows 11:
  1. Instale o Windows Subsystem for Linux (WSL).
  2. Instale o software necessário no WSL:
    1. Instale o Steam.
    2. Inicialize export TERM=xterm && steam,e então install & launch Stardew Valley através de sua interface. Isso também irá instalar suas dependências.
    3. (opcional) Baixe e instale sua IDE preferida, se você planeja compilar seu código no linux. para a ultima versão do standalone Rider (Pago):
      wget "<download url here>" -O rider-install.tar.gz
      sudo tar -xzvf rider-install.tar.gz -C /opt
      ln -s "/opt/JetBrains Rider-<version>/bin/rider.sh"
      ./rider.sh
      
    4. Instale SMAPI.
  3. Para iniciar o jogo, inicie o steam e rode o jogo através de sua interface
Se o seu computador for Windows 10 ou anterior:
  1. Instale a VirtualBox.
  2. Crie uma ZorinOS Core VM na VirtualBox.
    • Veja esse guia de instalação para mais detalhes. O instalador do ZorinOS pode ser um pouco diferente que o mostrado, mas deve continuar a ser bem intuitivo.
    • Se você não ver qualquer opção para sistemas operacionais de 64-bits na VirtualBox, veja como habilita-lo.
    • Quando criar o disco virtual, pelo menos 20GB é recomendado.
  3. Baixe o instalador do Steam no VM e execute-o.
  4. Inicie o Steam para finalizar a instalação. Se nada acontecer, veja essas etapas extras para conserta-lo.
  5. Instale o Stardew Valley pelo Steam.
  6. Instale SMAPI.
  7. (opcional) Instale o mono-complete e o MonoDevelop na sua VM. Isso só é necessário se você quiser compilar separadamente para Linux/Mac. Ao instalar os arquivos .deb, use as instruções para a versão Ubuntu mostrada aqui. Se você encontrar erros, que o Linux tenha piedade da sua alma.
  8. (opcional) Para desbloquear apenas o Mac OS: Virtual Machine Unlocker 2.1.1 para VmWare Workstation 11/12/14, VmWare Player 7/12/14, ou Fusion 7/8/10. Isso é necessário para inicializar o Mac OS em uma Maquina virtual (Virtual Machine).
Se o seu computador principal for Linux ou macOS:
  1. Instale VirtualBox.
  2. Crie uma VM com o windows.
  3. Instale o Stardew Valley na sua VM (Virtual machine).
  4. Instale o SMAPI.
  5. (opcional) Instale o Visual Studio Community na sua VM. Isso só é necessário se você quiser compilar separadamente pelo windows.

Consertando alertas de compilação comums

Após montar seu projeto, você pode ver avisos de compilação no Visual Studio > View > Error List ou MonoDevelop > View > Pads > Errors'. Aqui estão alguns deles.

This implicitly converts...

Sample warning: "This implicitly converts '{0}' from Net{1} to {2}, but Net{1} has unintuitive implicit conversion rules. Consider comparing against the actual value instead to avoid bugs. See https://smapi.io/buildmsg/avoid-implicit-net-field-cast for details."

Your code is referencing a net field, which can cause subtle bugs. This field has an equivalent non-net property, like monster.Health (int) instead of monster.health (NetBool). Change your code to use the suggested property instead.

FieldName is a Net* field...

Sample warning: "'{0}' is a Net{1} field; consider using the {2} property instead. See https://smapi.io/buildmsg/avoid-net-field for details."

Your code is referencing a net field, which can cause subtle bugs. You should access the underlying value instead:

  • For a reference type (i.e., one that can contain null), you can use the .Value property (or .FieldDict for a NetDictionary):
    if (building.indoors.Value == null)
    

    Or convert the value before comparison:

    GameLocation indoors = building.indoors.Value;
    if(indoors == null)
       // ...
    
  • For a value type (i.e., one that can't contain null), check if the parent is null (if needed) and compare with .Value:
    if (item != null && item.category.Value == 0)
    

The FieldName field is obsolete...

Sample warning: "The 'Character.friendships' field is obsolete and should be replaced with 'friendshipData'. See https://smapi.io/buildmsg/avoid-obsolete-field for details."

You're referencing a field which should no longer be used. Use the suggested field name instead to fix it.

An instance of analyzer ... cannot be created

Update to the latest Visual Studio; the NuGet package uses a recent feature that isn't available in older versions.

Outras problemas

Não consigo definir .NET 5

Se a lista de frameworks tiver opções começando com...

  • .NET Framework: você criou o tipo de projeto errado. Certifique-se de criar um projeto .NET 5 ao invés disso. (A nomenclatura é um pouco confusa.)
  • .NET Core, .NET Standard, ou .NET 5+: use .NET 5 para compatibilidade com o jogo. Se você não tiver essa opção, você poderá instalar o .NET 5 SDK para adiciona-lo.

Visual Studio não consegue detectar o jogo/SMAPI/MonoGame DLLs

Soluções comuns:

  • Reinicie o Visual Studio.
  • Certifique-se de que o jogo e o SMAPI estão instalados e funcionando corretamente.
  • Verifique se há um erro tipo "Failed to find game install path/Falha ao encontrar o caminho de instalação do jogo". Se isso aparecer, Você precisa especificar o diretório do jogo.
  • Certifique-se de ter criado um projeto .NET 5, Não .NET Framework. (Veja Como definir o framework alvo; Se você ver as opções começando com .NET Framework, delete o projeto e crie um .NET 5 ao invés disso.)
  • Tenha certeza de que selecionou .NET 5 (veja como fazer).

Se isso não o consertar:

  1. Clique Compilação > Recompilar solução (Visual Studio) ou Build > Rebuild All (MonoDevelop).
  2. Verifique o painel de Saída/Output ou a lista de erros (Visual Studio), ou a aba deErrors (MonoDevelop).
  3. Se você não encontrou nada relevante, poste a Saída/Output na hastebin, peça por ajuda no discord, e inclua o link da sua hastebin.

Ask for help

See Modding:Help for how to get help!