lukanpeixe / projetocastleroid

Trabalhando em códigos para o mod/mapa de aventura para Terraria produzido pelo Idealizador e seguidores do canal Press key to play.
Apache License 2.0
8 stars 7 forks source link

Castleroid - tmodloader - 1.0.0 #13

Closed Gurigraphics closed 7 years ago

Gurigraphics commented 7 years ago

Enviei a versão do que eu consegui fazer: https://github.com/lukanpeixe/projetocastleroid/pull/12

Podemos usar esta versão como base.

Ainda não resolvi o problema do NPC. Nesta versão o NPC é adicionado quando você der o primeiro pulo. E se você sair e entrar novamente no mapa, será adicionado outro NPC.

Esta versão:

Para modificar o código pode ser usado notepad++ ou sublime. Os arquivos do projeto ficam na pasta: tmodloader/Mod Sources. E o arquivo que será distribuído fica na pasta: tmodloader/Mods/ Castleroid.tmod.

Para ativar o Mod, coloque os arquivos na pasta do tmodloader. C:***\Documents\My Games\Terraria\ModLoader\ Dentro do Terraria você vai em Mod e clica em enable Castleroid.

Sempre que modificar algo no código você vai em Mod Sources, e clica build + reload. Ele compila e verifica erros automaticamente e cria o arquivo "Castleroid.tmod" que será carregado. Depois é só entrar no mundo.

Este é o mapa zerado que eu estava usando para testes: http://www.mediafire.com/file/vmbn8njcp9sc5md/Mapa_zerado.zip

Para retirar os NPC criados do mapa edite este arquivo: ExamplePerson.cs E coloque: npc.lifeMax = 0; Depois, build + reload. E pronto.

lukanpeixe commented 7 years ago

Fui testar aqui e:

Adiciona NPC no mundo

Funciona

Adiciona novo item

Visualizado

Impede respawn de monstros

Funciona

Desativa regeneração

Regeneração ainda acontece (no mapa do exemplo e no meu mapa)

tileRangeX = 50; tileRangeY = 40;

Funciona

player.tileSpeed = 5f;

Não testei

Gurigraphics commented 7 years ago

Regeneração ainda acontece (no mapa do exemplo e no meu mapa)

Agora acho que foi Basta adicionar este código em ResetEffects no final do arquivo Castleroid.cs.

player.lifeRegenCount = 0;

lukanpeixe commented 7 years ago

Eu na verdade acabei modificando a linha que já tinha, adicionado apenas o "count" e funcionou. Mas estava rolando um erro, o mod não estava conseguindo se montar pois perdias o caminhos dos sprites, depois de apanhar um pouco, descobri que tinha que renomear a sua pasta como "castleroid" haha

Gurigraphics commented 7 years ago

Uma vez aqui não apareceu nem a sprite de selecionar o personagem. Pensei que tinha bugado tudo. kkk

Esse "lifeRegenCount" deu um erro de compilação uma vez. Mas depois funcionou. Acho que foi problema de memória - muito programa aberto ao mesmo tempo.

Imagina fazer essas coisas naqueles windows antigo. Toda hora ia ser tela azul e ter que formatar o PC. kkk

lukanpeixe commented 7 years ago

Bom, vamos ver se outras pessoas testam e continua o erro, para ver se devemos nos preocupar :S haha

Gurigraphics commented 7 years ago

Bom, vamos ver se outras pessoas testam e continua o erro, para ver se devemos nos preocupar :S haha

Ok. Terminei o que faltava desta tarefa:

player.statLifeMax = 500; // define a quantidade máxima de vida
player.statLife = 50; // define a quantidade atual de vida
lukanpeixe commented 7 years ago

Ok. Terminei o que faltava desta tarefa:

Mas eu preciso que isso aconteça só no inicio (no momento de criar o personagem). Se ele usar uns cristais/frutas de vida, sair e voltar, como que estará a vida?

Gurigraphics commented 7 years ago

Mas eu preciso que isso aconteça só no inicio (no momento de criar o personagem). Se ele usar uns cristais/frutas de vida, sair e voltar, como que estará a vida?`

Isso pode ser executado em qualquer momento. Por exemplo, quando entra no jogo, podemos colocar 50/50. Depois, se ele usar um item ou teleporte X, muda para 75/75, depois 100/100. etc.

O ideal era verificar se o usuário possui determinado item no inventário, por exemplo, as "chaves" de acesso a cada região, que no Metroid são armas específicas. E se possui, daí alterar esse status de acordo com esses itens. Vamos ver se vai ser possível.

lukanpeixe commented 7 years ago

Eu só pretendo utilizar a função de cortar a vida para 40/40 no começo e talvez dar um full recovery após matar os bosses. para aumentar a vitalidade eu pretendo usar o life cristal/fruit mesmo, mas esta vida não pode voltar a ser 40/40. Enfim, é mais simples do que parece, acho que fazer um evento único no início do mapa já resolvi isso :)

Gurigraphics commented 7 years ago

Colocar 40/40 é simples. Ele precisa apenas entrar no mapa. Contudo, se o progresso não for salvo de acordo com os itens adquiridos, mesmo usando life cristal para aumentar a vida, ela vai sempre voltar para 40/40 quando ele entrar no mapa.

Talvez o Kemado consiga resolver isso. Basta criar um save em um arquivo txt. Qualquer número que seja armazenado neste txt já serviria como save para definir qual o progresso do jogador. Daí, quando ele entra no mapa, o número 1, representa nível 1, e coloca a vida 40/40, o 2 coloca 50/50, e etc. Se não for assim, só por itens adquiridos para saber o nível de progresso.

lukanpeixe commented 7 years ago

E se fazer uma poção que diminua o HP (40/40) apenas uma vez? Ai podemos forçar um evento que force o personagem a tomar a poção, por exemplo, o jogador é teleportado para uma área onde deve passar por um rio de lava, e só conseguira, tomando uma obsidian skin envenenada.

Gurigraphics commented 7 years ago

Daí funciona. O simples fato dele pegar o teleporte já pode disparar o evento.
O que não é possível é salvar. Daí, sempre que ele entrar no mapa vai resetar para 40/40. E quando ele pegar teleporte para uma região dai aumenta para 50/50, 60/60, conforme o teleporte que ele adquiriu ou nível que atingiu.

lukanpeixe commented 7 years ago

Então, eu não estou entendendo o por quê a informação vai impregnar no personagem, a ideia é só setar a informação uma única vez. Por que quando o personagem for recarregado a informação se repete?

Gurigraphics commented 7 years ago

Ela só repete para resolver o outro problema: dele sair do mapa e usar os cristais para aumentar o life.

Se isso não é mais problema, então é só usar esse evento uma única vez mesmo.

lukanpeixe commented 7 years ago

A não, mais ai é a mesma coisa de ir em outro mapa e pegar uma picareta, um explosivo, uma armadura aleatória, é basicamente cheat, ai azar da pessoa que vai estragar a experiência...

Gurigraphics commented 7 years ago

Blz. Então, isso também resolve o problema do spawn do NPC.

Eu ri daquele vídeo lá cheio daqueles NPCs no inicio.

Não tente entender isso aqui que vai bugar tua cabeça.

kkkk

Para parar de desovar NPC a cada pulo coloca lá: npc.lifeMax = 0;