Godot 4 · GDScript
Succes
Des succes que vous definissez dans le panneau et debloquez depuis le jeu. Chacun a une cle ; les succes caches restent masques jusqu'a ce que le joueur les debloque.
Configuration du Panneau
Dans le panneau, creez vos succes : nom, description, icone, points, et si chacun est cache. Chacun recoit une cle que vous utilisez depuis le code.
Conservez la cle de chaque succes : c'est l'identifiant que vous passez a unlock_achievement() et check_achievement().
Lister avec Progression
Obtenez tous les succes actifs avec l'etat de deblocage de ce joueur (les succes caches encore verrouilles sont omis). Arrive via 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
}Debloquer un Succes
Debloquez-en un pour le joueur actuel. Sans danger en cas d'appels repetes : il n'accorde jamais deux fois (il signale already_unlocked a la place).
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("Succes debloque : %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 lockedDebloquer un succes inactif echoue (success=false). Les cles inconnues echouent aussi.
Verifier ou Inspecter un Succes
Demandez si un seul succes est debloque, ou recuperez ses details complets (nom, icone, points) ainsi que l'etat du joueur.
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 debloque : %s" % [key, unlocked])