Godot 4 · GDScript
Conquistas
Conquistas que você define no painel e desbloqueia a partir do jogo. Cada uma tem uma chave; as ocultas permanecem mascaradas até que o jogador as desbloqueie.
Configuração do Painel
No painel, crie suas conquistas: nome, descrição, ícone, pontos e se cada uma é oculta. Cada uma recebe uma chave que você usa a partir do código.
Guarde a chave de cada conquista: é o identificador que você passa para unlock_achievement() e check_achievement().
Listar com Progresso
Obtenha todas as conquistas ativas com o estado de desbloqueio deste jogador (as ocultas ainda bloqueadas são omitidas). Chega pelo sinal achievements_loaded.
Gamdato.achievements_loaded.connect(_on_achievements)
Gamdato.list_achievements()
func _on_achievements(list: Array) -> void:
for a in list:
var mark := "[x]" if a.unlocked else "[ ]"
print("%s %s (%d pts)" % [mark, a.name, a.points])# achievements_loaded -> achievements: Array, each:
{
"achievement_key": String,
"name": String,
"description": String,
"icon_url": String,
"points": int,
"is_hidden": bool,
"sort_order": int,
"unlocked": bool,
"unlocked_at": String # null while locked
}Desbloquear uma Conquista
Desbloqueie uma para o jogador atual. É seguro chamar repetidamente: nunca concede duas vezes (em vez disso, reporta already_unlocked).
Gamdato.achievement_unlocked.connect(_on_unlocked)
Gamdato.unlock_achievement("first_win")
func _on_unlocked(ok: bool, key: String, already: bool) -> void:
if ok and not already:
print("Conquista desbloqueada: %s" % key)# achievement_unlocked(success: bool, achievement_key: String, already_unlocked: bool)
# already_unlocked = true when it was unlocked before (safe to re-call)
# achievement_checked(achievement_key: String, unlocked: bool, unlocked_at: String)
# unlocked_at is empty/null while still lockedDesbloquear uma conquista inativa falha (success=false). Chaves desconhecidas também falham.
Verificar ou Inspecionar Uma
Pergunte se uma única conquista está desbloqueada, ou obtenha seus detalhes completos (nome, ícone, pontos) além do estado do jogador.
Gamdato.achievement_checked.connect(_on_checked)
Gamdato.check_achievement("first_win")
Gamdato.achievement_info_loaded.connect(_on_ach_info)
Gamdato.get_achievement_info("first_win")
func _on_checked(key: String, unlocked: bool, unlocked_at: String) -> void:
print("%s desbloqueada: %s" % [key, unlocked])