Skip to content

Recursos de lógica para achievementslink

Link para o texto em inglês: Achievement Logic Features

Existem várias ferramentas e opções disponíveis para o desenvolvedor, saber como utilizá-las adequadamente melhorará a qualidade de seus sets. Essas ferramentas/opções podem ser usadas no Achievement Editor:

achievement_editor

Para ajuda sobre esses, o nosso servidor do Discord estará sempre aberto para ajudar.

Valores Deltalink

Um valor Delta é o valor do frame anterior.

Exemplos de como ele pode ser usado:

  • Detectar se o nível foi aumentado: level > delta level. Significa que "o nível atual é maior que o nível do frame anterior".
  • Detectar danos: health < delta health. Significa que "a saúde atual é menor do que a saúde do frame anterior". Ou você pode apenas tornar o valor do frame anterior um requisito. delta health = 1 significa que "o valor do frame anterior para a saúde deve ser 1". Você pode ver como isso funciona no Exemplos Reais

Hit Countslink

No Achievement Editor, o campo do lado direito é Hit Count.

Zero é o valor padrão. Isso significa que a condição deve ser verdadeira quando a conquista aparecer.

Se você definir manualmente uma contagem (hit), por exemplo 1, significa que a condição deve ser verdadeira por pelo menos 1 frame e, uma vez que a contagem de hits seja atendida, ela não precisa ser atendida novamente em outro momento.

ATENÇÃO: se uma condição tiver uma contagem de hits e atingir o número necessário, esta condição não é mais testada. Ela é verdadeira e permanece verdadeira, A MENOS que você tenha um Reset If, o qual discutiremos abaixo.

Você pode ver como isso funciona no Exemplos Reais

Special Flagslink

No Achievement Editor, é o campo intitulado como Special?.

Essas flags condicionais só funcionam se você definir uma contagem de hits para uma condição.

PauseIflink

Isso pausará a atividade para todas as condições no mesmo grupo.

Nota: tenha em mente que isso não irá pausar as condições em outros grupos.

O PauseIf é usado para pausar a contagem de hits em uma situação específica (como pausar o jogo). É usado quando você deseja manter a contagem de hits previamente conquistada, mas não deseja reiniciá-la quando alguém simplesmente faz uma pausa no jogo, por exemplo.

ResetIflink

Isso irá zerar a contagem de hits para todas condições em que você definiu uma contagem de hits. Ele é muito mais comum de usar do que PauseIf

Nota: Ao contrário do PauseIf, le irá zerar as condições em todos os grupos

Você pode ver como isso funciona no Real Examples

Add Sourcelink

Quando uma condição tem a flag Add Source o valor daquele endereço de memória é adicionado ao valor do endereço na condição logo abaixo, e a comparação é feita na condição abaixo daquela com o Add Source. Isso pode soar um pouco confuso, mas o exemplo a seguir vai esclarecer como funciona:

Add Source Example

Neste exemplo o valor em 0x8010 será adicionado ao valor em 0x8020 e a comparação é se esta soma é maior ou igual a zero.

Se o valor em 0x8010 é 1 e o valor em 0x8020 é 2, a comparação será 1 + 2 > 0, ou 3 > 0.

Nota: todos os campos de comparação na condição com a flag Add Source são ignorados.

Tentando resumir esta explicação com uma imagem:

Add Source Explained

Nota: você pode usar Add Source para somar mais endereços, como no exempo abaixo:

addsource1

Sub Sourcelink

Funciona muito semelhante ao Add Source, porém o Sub Source faz o valor naquele endereço de memória ser negativo.

Nota 1: Sub Source NÃO é um flag de subtração. Ele apenas torna o valor negativo.

Nota 2: A linha final (sem Add Source ou Sub Source) ainda é adicionada para a comparação final.

Usando aquele exemplo de uso de Add Source example, se nós o substituíssemos por Sub Source e com os mesmos valores (valor(0x8010) = 1 e valor(0x8020) = 2), a comparação seria -1 + 2 > 0, or 1 > 0.

Add Hitslink

Também funciona de maneira de similar ao Add Source, porém relacionado aos hitcounts.

O Add Hits adiciona o hitcount da condição atual à próxima condição. O hitcount total a ser checado será aquele definido na condição logo após a última condição com Add Hits. Se a condição logo após o último Add Hits não tiver um hitcount definido, todas as condições com Add Hits serão ignoradas.

Diferentemente do Add Source, todos os campos são usados numa condição Add Hits, inclusive os campos de comparação. Se uma condição é verdadeira, o hitcount para esta condição é incrementada (e parará de incrementar se assim que o número de hitcount definido for atingido).

As condições com Add Hits não precisam ser verdadeiras para a conquista disparar. Porém primeira condição após o último Add Hits, sim, precisa ser verdadeira.

Groupslink

Os achievements podem ter grupos adicionados a eles que podem atuar como requisitos alternativos para desbloquear um achievement. Estes são chamados de Alt Groups.

Uma coisa extremamente importante a notar: para uma conquista desbloquear, deve ter o Core group E pelo menos um Alt group ser verdadeiro. Se não houver nenhum grupo Alt presente, apenas as condições do Core group's precisam ser verdadeiras.

Dica: devido ao grupo Core sempre precisar ser verdadeiro, normalmente você colocaria lá condições que sejam à todos os requisitos alternativos. No entanto, um truque que você pode usar para basicamente para ignorar a necessidade de um grupo Core é dar-lhe uma condição que é sempre verdadeira, como:

Mem 0x0001 = Mem 0x0001

Como o grupo Core agora é sempre verdadeiro, agora você pode se concentrar em diferenciar os grupos Alt.

Comments