steam_upload_score_buffer(lb_name, score, buffer);
| Argument | La description |
|---|---|
| lb_name | Le nom du classement auquel vous importez les scores (une chaîne). |
| score | Le score à télécharger (un nombre réel). |
| buffer | L'ID du tampon à attacher. |
Retours: Real
Cette fonction enverra un score au leaderboard donné avec un paquet de données créé à partir d'un tampon. La taille du tampon ne doit pas dépasser 256 octets - tout ce qui va au-delà sera supprimé - et peut contenir toutes les données dont vous avez besoin. Le score à télécharger doit être un nombre réel, et le nom du classement est une chaîne qui a été définie lorsque vous avez créé le classement en utilisant la fonction. steam_create_leaderboard.
Si la fonction échoue, elle renvoie une valeur de -1, alors qu'un post réussi renvoie un identifiant unique pour le téléchargement et déclenche un événement Steam asynchrone. Cet événement va créer un ds_map dans la variable intégrée async_load avec les paires clé / valeur suivantes:
Notez que si la fonction lors du téléchargement du leaderboard, la clé "entrées" de la async_load map va maintenant avoir une clé "data" pour que vous puissiez récupérer le tampon de données téléchargé (voir l'exemple de code étendu Steam Event pour plus de détails).
Dans cet exemple, nous importons d'abord une partition, puis analysons la async_load carte retournée en cas de succès. Le code ci-dessous montre un exemple typique de téléchargement, avec un tampon créé pour contenir une chaîne indiquant le niveau auquel le score a été importé:
if (hp <= 0)
{
var buff = buffer_create(256, buffer_fixed, 1
);
buffer_write(buff, buffer_string, "Uploaded on
level " + string(global.Level));
upload_ID = steam_upload_score("Game Scores",
score, buff);
if (!upload_ID)
{
alarm[0] = room_speed;
}
buffer_delete(buff);
}
Notez que nous avons défini une alarme si l'appel échoue. Cela sera utilisé pour essayer le téléchargement plus tard et vous pouvez ajouter du code supplémentaire pour réessayer le téléchargement ou enregistrer le score dans un fichier texte en cas d'échec, etc. Notez également que nous supprimons immédiatement le fichier. tampon, puisqu'il n'est plus requis pour la fonction. Nous ajoutons maintenant ce qui suit dans l' événement asynchrone Steam pour l'instance contrôlant les scores:
var type = ds_map_find_value(async_load,
"event_type");
if (type == "leaderboard_upload")
{
var lb_ID = ds_map_find_value(async_load,
"post_id");
if lb_ID == upload_ID
{
var lb_name =
ds_map_find_value(async_load, "lb_name");
var lb_done =
ds_map_find_value(async_load, "success");
var lb_score =
ds_map_find_value(async_load, "score");
var lb_updated =
ds_map_find_value(async_load, "updated");
show_debug_message("leaderboard
post id:" + string(lb_ID) + " to lb:" + string(lb_name) + " with
score:" + string(lb_score) + " updated=" + string(lb_updated));
if (lb_done)
{
show_debug_message("-
Succeeded");
}
else
{
show_debug_message("-
Failed");
}
}
}
Dans l'exemple, nous publions simplement les valeurs de retour dans la fenêtre du compilateur en tant que messages de débogage, mais vous pouvez utiliser cet événement pour traiter les informations comme vous le souhaitez.