Ir para o conteúdo
Riot Bits

Riot Bits

  • Lar
  • Notícias
  • Guias
  • Guias de vídeo
  • Notas do Patch
  • Denunciar abuso
  • Alternar formulário de pesquisa
O Criador do Planeta

O inventário do Planet Crafter e outros modding (dnSpy)

postado em 03/25/2022 Por Akarnokd Sem comentários em O inventário do Planet Crafter e outros modding (dnSpy)
  • Título: O Criador do Planeta
  • Data de lançamento:
  • Desenvolvedor: Jogos Miju
  • Editor: Jogos Miju
As informações sobre The Planet Crafter ainda estão incompletas. Por favor, ajude-nos a preencher os detalhes do jogo usando este formulário de contato.

Neste guia, Descreverei algumas modificações que corrigi para ajustar alguns comportamentos da interface do usuário e trapacear um pouco depois de concluir o jogo.

O jogo está escrito em Unity e C#, o que torna relativamente fácil de explorar através da ferramenta DNSPY.

Observe que essas modificações não são mods reais, mas patches temporários, porque no momento em que o jogo é atualizado pelos desenvolvedores, As mudanças locais são substituídas. Existem estruturas de modding, como bepinex para outros jogos, mas eu não olhei para aqueles.

Preparativos

  • Baixe os mais recentes disponíveis dnSpy.
  • Extraia -o para um local adequado e execute dnspy.exe
  • No arquivo > Abrir, localize o Assembly-csharp.dll no
    %{dir}\common\The Planet Crafter Prologue\Planet Crafter_Data\Managed

    diretório.

Eu recomendo usar “Método de edição” em vez de “Classe de edição” Para evitar recompilação drástica de peças de código não relacionadas que podem quebrar outra coisa. Também, DNSPY tem bugs, então não há necessidade de tentar.

Modificar a classificação

O jogo classifica os itens pelo nome por padrão, mas eu gosto de ar e comida na frente da lista. A classificação é tratada no Spacecraft.inventory::AUTOSORT() método. O método atualmente possui uma expressão LINQ para classificar que substituiremos por uma chamada direta para Lista::Organizar().

this.worldObjectsinininventory.sort(delegar(WorldObject a, WorldObject b)
{
    string id = a.getGroup().Pode();
    string id2 = b.getGroup().Pode();
    se (id.startswith("Oxygencapsule") && !id2.startswith("Oxygencapsule"))
    {
        retornar -1;
    }
    se (!id.startswith("Oxygencapsule") && id2.startswith("Oxygencapsule"))
    {
        retornar 1;
    }
    se (id.startswith("Waterbottle") && !id2.startswith("Waterbottle"))
    {
        retornar -1;
    }
    se (!id.startswith("Waterbottle") && id2.startswith("Waterbottle"))
    {
        retornar 1;
    }
    Retornar id.compareto(ID2);
});

Não conheço todos os IDs dos itens, mas posso ser despejado em um arquivo deste método via StreamWriter.

Mover itens do mesmo tipo de/para o inventário

Por padrão, Pode -se mover itens um por um, que pode ser tedioso. Clicar em uma imagem de inventário é tratado por Spacecraft.inventoryDisplayer::OnImageClicked() método. Por padrão, Tem ação para os cliques do mouse esquerdo e direito. Como não consegui encontrar uma maneira de verificar modificadores como Shift ou Ctrl Keys, Eu decidi usar o botão do mouse do meio.

Quando o usuário clica no botão do mouse do meio, Temos que encontrar os objetos no inventário atual com o mesmo ID do item, Em seguida, pegue a outra entidade de inventário. Em seguida, tente adicioná -lo ao outro inventário e se bem -sucedido, Remova -o do inventário atual, Assim, lidando com o caso completo.

se (_EventTriggerCallbackData.PointeventData.Button == PointerEventData.inputButton.middle)
{
    Dataconfig.umpype OpenEdui = mijutools.managers.getmanager().Dentes();
    se (OpenEdui == DATACONFIG.UIDADEPE.CONTINER)
    {
        Inventário OtherInventory = ((UiWindowContainer)Mijutools.managers.getManager().Getwindowviauiid(Openedui)).Getotherinventory(this.inventory);
        se (this.inventory != nulo && Other inventory != nulo)
        {
            string id = _eventtriggercallbackdata.worldobject.getgroup().Pode();
            Lista da lista = nova lista();
            foreach (WorldObject WorldObject2 NEST.Inventory.GetinsideWorldObjects())
            {
                se (WorldObject2.GetGroup().Pode() == id)
                {
                    list.add(WorldObject2);
                }
            }
            foreach (WorldObject WorldObject3 na lista)
            {
                se (OtherInventory.additem(WorldObject3))
                {
                    this.inventory.removeItem(WorldObject3, falso);
                }
            }
        }
    }
}

Capacidade de inventário (Trapaceando)

Por padrão, O inventário é muito pequeno e passei a maior parte do tempo indo e voltando entre os depósitos, Sites de armazenamento e construção. Eu também gosto de coletar todos os depósitos que estavam se tornando tempo e consumo de ar.

O inventário é gerenciado pelo acima mencionado Spacecraft.inventory classe e sua capacidade é tratada no InventorySize campo privado. Infelizmente, tudo que eu poderia fazer é substituir este campo em 3 locais: o construtor, o getter e o setter para não quebrar a estrutura da montagem para muito:

inventário público(int _inventoryId, int _inventorySize, Lista _worldObjectsinininventory = nulo)
{
    this.inventoryId = _inventoryId;
    this.inventorySize = _inventorySize;
    this.inventorySize = 250; // <----------------------------------
    this.worldObjectsinininventory = ((_worldObjectsinininventory != nulo) ? _worldObjectsinininventory : nova lista());
    this.authorizedGroups = nova lista();
}
Public Int Getsize()
{
    this.inventorySize = 250; // <----------------------------------
    devolver este.inventorySize;
}


Public Void Setsize(int _inventorySize)
{
    se (_inventorySize == this.inventorySize)
    {
        retornar;
    }
    this.inventorySize = _inventorySize;
    this.inventorySize = 250; // <----------------------------------
    this.RefreshDisplayerContent();
}

No entanto, isso tem algumas consequências da interface do usuário:

  • A tela de inventário para o jogador excederá a tela e você não poderá interagir com nada além dela.
  • Afeta o equipamento “inventário”
  • Afeta todos os recipientes, incluindo o mineiro principal.
  • Os itens captados são adicionados ao final do inventário e podem não ser visíveis, incluindo ar, itens de água e comida.
  • Muitos cliques ao depositar inventário em contêineres.
  • Tela Lag ao visualizar e mover itens em contêineres.

Felizmente, o último pode ser remediado pelo classificador e no grupo mover mods acima. Armazene os itens por tipo em recipientes separados.

Localização do asteróide (Trapaceando)

Por padrão, O jogo tem como alvo um raio relativamente grande ao redor do jogador quando asteróides (Natural e Recursos chamados em Via Rockets) terra. Minha base está na rocha lambda e a estrutura de lançamento também está lá. Consequentemente, Muitas pedras acabam no lago da área de partida.

Os asteróides são tratados no Spacecraft.asteridHandler e a seleção de alvo está no Spawnasteróide() método. Encontre o loop e nele, um vetor calculado através de uma unidade aleatória e raio. Mude para algo assim:

Vetor2 vetor = unityEngine.random.insideunitcircle * Math.Min((flutuador)_asteroidevent.distanceflomplyer, 20f);

A razão pela qual eu uso matemática.. 20f é bem apertado, então eu recomendo sair em um campo aberto ou posição elevada. Essa concentração tem a desvantagem de que a localização do jogador é inundada de detritos que podem enterrar o jogador e essas pedras ficam por minutos antes de despertar.

Aviso. Nas versões de acesso inicial, Os asteróides podem e machucam o jogador, então dê ao mod um raio maior ou vá para dentro de casa e espere os detritos desaparecerem.

Isso é tudo o que estamos compartilhando hoje para isso O Criador do Planeta guia. Este guia foi originalmente criado e escrito por Akarnokd. Caso não atualizemos este guia, você pode encontrar a atualização mais recente seguindo este link.

Se você acredita que algum conteúdo deste site viola seus direitos, incluindo seus direitos de propriedade intelectual, entre em contato conosco imediatamente usando nosso formulário de contato.
Guias Tag:O Criador do Planeta

Navegação de artigos

Postagem anterior: Desejo perdido: No Guia Deseperado do Mundo
próxima postagem: Um guia de passo a fim de realização de memórias azul

Deixe um comentário Cancelar resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  • Título: O Criador do Planeta
  • Data de lançamento:
  • Desenvolvedor: Jogos Miju
  • Editor: Jogos Miju
As informações sobre The Planet Crafter ainda estão incompletas. Por favor, ajude-nos a preencher os detalhes do jogo usando este formulário de contato.

Isenção de responsabilidade

Todo o conteúdo citado é derivado de suas respectivas fontes. Se você acha que usamos seu conteúdo sem permissão, certifique-se de entrar em contato conosco e levaremos isso a sério.
  • Sobre nós
  • Contate-nos
  • política de Privacidade
  • Termos de serviço

direito autoral © 2025 Riot Bits.

Distribuído por PressBook Notícias tema WordPress