Diferenças entre edições de "Modificações:Guia do Modder/Teste e Solução de Problemas"

Fonte: Stardew Valley Wiki
Saltar para a navegação Saltar para a pesquisa
(→‎Other issues: traduzido)
Etiquetas: Edição via dispositivo móvel Edição feita através do sítio móvel
 
(Há 5 revisões intermédias de 2 utilizadores que não estão a ser apresentadas)
Linha 2: Linha 2:
 
{{../cabeçalho}}
 
{{../cabeçalho}}
  
This page helps you test your mods and solve common issues. '''For issues ''using'' mods, see [[Modding:Player Guide/Troubleshooting]].'''
+
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 o mod==
Linha 76: Linha 76:
  
 
===This implicitly converts...===
 
===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.''"
+
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.''"
  
Your code is referencing a [[Modding:Modder Guide/Game Fundamentals#Net fields|net field]], which can cause subtle bugs. This field has an equivalent non-net property, like <samp>monster.Health</samp> (<samp>int</samp>) instead of <samp>monster.health</samp> (<samp>NetBool</samp>). Change your code to use the suggested property instead.
+
Seu código está referenciando um [[Modding:Modder Guide/Game Fundamentals#Net fields|net field]], na qual pode causar alguns bugs sutis. Esse campo tem uma propriedade não-net equivalente, Como <samp>monster.Health</samp> (<samp>int</samp>) Ao invés de <samp>monster.health</samp> (<samp>NetBool</samp>). Altere seu código para usar a propriedade sugerida ao invés disso.
  
 
===FieldName is a Net* field...===
 
===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.''"
+
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.''"
  
Your code is referencing a [[Modding:Modder Guide/Game Fundamentals#Net fields|net field]], which can cause subtle bugs. You should access the underlying value instead:
+
Seu código está referenciando um [[Modding:Modder Guide/Game Fundamentals#Net fields|net field]], na qual pode causar alguns bugs sutis. Você deveria acessar o valor base ao invés.
 
<ul>
 
<ul>
<li>For a reference type (''i.e.,'' one that can contain <samp>null</samp>), you can use the <samp>.Value</samp> property (or <samp>.FieldDict</samp> for a <samp>NetDictionary</samp>):
+
<li>Para um tipo de referencia (''ex.,'' aquele que pode conter <samp>null</samp>), você pode usar a propriedade <samp>.Value</samp> (ou <samp>.FieldDict</samp> para um <samp>NetDictionary</samp>):
 
<syntaxhighlight lang="c#">
 
<syntaxhighlight lang="c#">
 
if (building.indoors.Value == null)
 
if (building.indoors.Value == null)
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Or convert the value before comparison:
+
Ou converta o valor antes da comparação:
 
<syntaxhighlight lang="c#">
 
<syntaxhighlight lang="c#">
 
GameLocation indoors = building.indoors.Value;
 
GameLocation indoors = building.indoors.Value;
Linha 96: Linha 96:
 
   // ...
 
   // ...
 
</syntaxhighlight></li>
 
</syntaxhighlight></li>
<li>For a value type (''i.e.,'' one that can't contain <samp>null</samp>), check if the parent is null (if needed) and compare with <samp>.Value</samp>:
+
<li>Para um tipo value (''i.e.,'' aquele que não pode conter <samp>null</samp>), verifique se o pai é nulo (se necessário) e compare com <samp>.Value</samp>:
 
<syntaxhighlight lang="c#">
 
<syntaxhighlight lang="c#">
 
if (item != null && item.category.Value == 0)
 
if (item != null && item.category.Value == 0)
Linha 103: Linha 103:
  
 
===The FieldName field is obsolete...===
 
===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.''"
+
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.''"
  
You're referencing a field which should no longer be used. Use the suggested field name instead to fix it.
+
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===
+
===An instance of analyzer ... cannot be created===  
Update to the latest [https://visualstudio.microsoft.com/vs/community/ Visual Studio]; the NuGet package uses a recent feature that isn't available in older versions.
+
Atualize para o último [https://visualstudio.microsoft.com/vs/community/ Visual Studio]; o pacote NuGet usa um recurso recente que não está disponível em versões antigas.
  
==Outras problemas==
+
==Outros problemas==
 
===Não consigo definir .NET 5===
 
===Não consigo definir .NET 5===
 
Se a lista de frameworks tiver opções começando com...
 
Se a lista de frameworks tiver opções começando com...
Linha 122: Linha 122:
 
* Certifique-se de que o jogo e o SMAPI estão instalados e funcionando corretamente.
 
* 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 [https://smapi.io/package/custom-game-path especificar o diretório do jogo].
 
* 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 [https://smapi.io/package/custom-game-path especificar o diretório do jogo].
* Certifique-se de ter criado um projeto .NET 5, '''Não''' .NET Framework. (Veja [[Modding:IDE reference#Set the target framework|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.)
+
* Certifique-se de ter criado um projeto .NET 5, e '''Não''' um .NET Framework. (Veja [[Modding:IDE reference#Set the target framework|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 [[Modding:IDE reference#Set the target framework|como fazer]]).
 
* Tenha certeza de que selecionou .NET 5 (veja [[Modding:IDE reference#Set the target framework|como fazer]]).
  
Linha 130: Linha 130:
 
# Se você não encontrou nada relevante, poste a ''Saída/Output'' na [https://hastebin.com hastebin], [[#Ask for help|peça por ajuda no discord]], e inclua o link da sua hastebin.
 
# Se você não encontrou nada relevante, poste a ''Saída/Output'' na [https://hastebin.com hastebin], [[#Ask for help|peça por ajuda no discord]], e inclua o link da sua hastebin.
  
==Ask for help==
+
==Solicitar ajuda==
See [[Modding:Help]] for how to get help!
+
Veja a página [[Modificações:Ajuda]] para saber como solicitar ajuda!
  
 
[[en:Modding:Modder Guide/Test and Troubleshoot]]
 
[[en:Modding:Modder Guide/Test and Troubleshoot]]
 
[[es:Modding:Guía del Modder/Prueba y solución de problemas]]
 
[[es:Modding:Guía del Modder/Prueba y solución de problemas]]

Edição atual desde as 14h20min de 27 de abril de 2024

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 MrsCupc4ke em 2024-04-27 14:20:21.

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.

Outros 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!