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

Fonte: Stardew Valley Wiki
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 2024-02-20 21:27:07.

Creating SMAPI mods SMAPI mascot.png


Modificações:Índice

Essa página te ajudará a testar seus mods e resolver problemas comuns. Já para problemas ao usar mods, veja 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...

Exemplo do alerta: "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."

Seu código está referenciando um net field, na qual pode causar alguns bugs sutis. Esse campo tem uma propriedade não-net equivalente, Como monster.Health (int) Ao invés de monster.health (NetBool). Altere seu código para usar a propriedade sugerida ao invés disso.

FieldName is a Net* field...

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

Seu código está referenciando um net field, na qual pode causar alguns bugs sutis. Você deveria acessar o valor base ao invés.

  • Para um tipo de referencia (ex., aquele que pode conter null), você pode usar a propriedade .Value (ou .FieldDict para um NetDictionary):
    if (building.indoors.Value == null)
    

    Ou converta o valor antes da comparação:

    GameLocation indoors = building.indoors.Value;
    if(indoors == null)
       // ...
    
  • Para um tipo value (i.e., aquele que não pode conter null), verifique se o pai é nulo (se necessário) e compare com .Value:
    if (item != null && item.category.Value == 0)
    

The FieldName field is obsolete...

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

Você está referenciando um campo que não deverá mais ser usado. Use o nome do campo sugerido ao invés para conserta-lo.

An instance of analyzer ... cannot be created

Atualize para o último Visual Studio; o pacote NuGet usa um recurso recente que não está disponível em versões antigas.

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, e Não um .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.

Solicitar ajuda

Veja a página Modificações:Ajuda para saber como solicitar ajuda!