Récompenses et portefeuille
Des récompenses quotidiennes, hebdomadaires ou uniques décidées par le serveur et créditées sur un portefeuille par joueur.
Les commentaires du code et les noms d'API restent en anglais pour correspondre aux SDK.
Définir les récompenses#
Créez des récompenses sur la page Récompenses :
| Champ | Signification |
|---|---|
| Clé de récompense | Identifiant utilisé dans le code, par ex. daily_coins. |
| Quantité et monnaie | La quantité créditée, et dans quelle monnaie (par ex. coins). |
| Fréquence | daily, weekly ou once. |
| Active | Les récompenses inactives sont masquées et ne peuvent pas être réclamées. |
Lister les récompenses#
Avec un joueur connecté, chaque récompense inclut claimable et next_claim_at :
var available = await Majacloud.Rewards.ListAsync();
foreach (var reward in available.Value)
Debug.Log(reward.RewardKey + " claimable: " + reward.Claimable + " next: " + reward.NextClaimAt);var available := await Majacloud.rewards.list()
for reward in available.value:
print(reward.reward_key, " claimable: ", reward.claimable, " next: ", reward.next_claim_at)const available = await mc.rewards.list();
for (const reward of available.value) console.log(reward.reward_key, reward.claimable, reward.next_claim_at);curl https://majacloud.majanite.com/v1/rewards -H "X-Project-ID: $PROJECT_ID" -H "X-Client-Key: $CLIENT_KEY" \
-H "Authorization: Bearer $TOKEN"Réclamer#
Le serveur décide si la demande est autorisée et crédite le portefeuille de manière atomique. Une deuxième demande dans la même période échoue avec conflict et details.next_claim_at.
var claim = await Majacloud.Rewards.ClaimAsync("daily_coins");
if (claim.Ok)
{
Debug.Log($"+{claim.Value.Amount} {claim.Value.Currency}, balance {claim.Value.Balance}");
}
else if (claim.Error.Code == MajacloudErrorCode.Conflict)
{
DateTime? next = claim.Error.GetDetailDateTime("next_claim_at"); // UTC
}var claim := await Majacloud.rewards.claim("daily_coins")
if claim.ok:
print("+%s %s, balance %s" % [claim.value.amount, claim.value.currency, claim.value.balance])
elif claim.error == "conflict":
print("Come back at ", claim.details.next_claim_at) # UTCconst claim = await mc.rewards.claim('daily_coins');
if (claim.ok) {
console.log(`+${claim.value.amount} ${claim.value.currency}, balance ${claim.value.balance}`);
} else if (claim.error.code === 'conflict') {
console.log('Come back at ' + claim.error.details.next_claim_at); // UTC
}curl -X POST https://majacloud.majanite.com/v1/rewards/claim -H "X-Project-ID: $PROJECT_ID" -H "X-Client-Key: $CLIENT_KEY" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" -d '{"reward_key": "daily_coins"}'Portefeuille#
Lisez les soldes du joueur par monnaie :
var wallet = await Majacloud.Rewards.GetWalletAsync();
Debug.Log("Coins: " + wallet.Value.Coins + ", gems: " + wallet.Value.Get("gems"));var wallet := await Majacloud.rewards.get_wallet()
print("Coins: ", wallet.value.get("coins", 0))const wallet = await mc.rewards.getWallet();
console.log('Coins: ' + (wallet.value.balances.coins || 0));curl https://majacloud.majanite.com/v1/wallet -H "X-Project-ID: $PROJECT_ID" -H "X-Client-Key: $CLIENT_KEY" \
-H "Authorization: Bearer $TOKEN"Quand les récompenses se réinitialisent#
Les récompenses quotidiennes peuvent être réclamées à nouveau dès 00:00 UTC, les hebdomadaires dès le lundi 00:00 UTC, et les récompenses uniques plus jamais.