Руководства
Награждайте игроков
Копировать страницу
Платите игрокам в $LIA из пула вознаграждений вашего приложения, с вашего сервера. Ежедневная бонус, как пример, безопасно повторить и в пределах ваших ограничений.
Ваше приложение должно иметь пул вознаграждений, финансируемый командой Lia (см. Пулы наград. Вознаграждения всегда приходят с вашего сервера, с вашим ключом.
#Ежедневный бонус
Каждый игрок может получить 2 LIA один раз в день, после завершения уровня.
import { lia } from "./lia.js";
app.post("/api/daily-bonus", async (req, res) => {
const playerId = await playerFrom(req.body.session); // see Verify on your server
if (!playerId) return res.status(401).end();
if (!(await db.finishedALevelToday(playerId))) return res.status(403).json({ error: "play_first" });
const day = new Date().toISOString().slice(0, 10); // 2026-11-01
try {
const result = await lia("POST", "/rewards", {
playerId,
amount: 2,
key: `daily:${day}:${playerId}`, // one a day per player, however often this runs
reason: "Daily bonus",
});
res.json({ paid: result.status === "paid", amount: result.amount });
} catch (error) {
if (error.data?.error === "pool_empty") return res.status(503).json({ error: "bonus_paused" });
if (error.data?.error === "daily_limit") return res.status(429).json({ error: "come_back_tomorrow" });
throw error;
}
});На странице:
const { paid, amount } = await api("/api/daily-bonus", {});
if (paid) {
Lia.haptic("success");
Lia.toast("+" + amount + " LIA");
}#Выбор ключей
Ключ делает вознаграждение безопасным. Один и тот же ключ никогда не платит дважды, поэтому сделайте его названием причины вознаграждения, а не запроса:
| Награда | Ключ |
|---|---|
| Ежедневный бонус | daily:2026-11-01:p_3f9c… |
| Место в турнире | tournament-44:place-1:p_3f9c… |
| Завершенный квест | quest-7:p_3f9c… |
| Просмотренное видео | ad:ad_8e1c… |
Повторная попытка с тем же ключом после таймаута даст ответ { "status": "duplicate" } и платит ничего больше, поэтому повторная попытка всегда безопасна. Никогда не повторяйте с новым ключом.
#Следите за пулом
const { balance, dailyCapPerPlayer } = await lia("GET", "/pool");
if (balance < 100) alertTheTeam(`Reward pool is down to ${balance} LIA`);Когда пула может'не покрывают вознаграждение, POST /rewards ответы 409 pool_empty. Скажите игрокам вежливо и попросите команду Lia увеличить его. Когда игрок уже использовал ваше приложение'дневной лимит, он отвечает 429 daily_limit (лимит на человека в день UTC, установленный командой).
#В тесте
С вашим тестовым ключом вознаграждения фальшивые: записываются, с их вебхуком, но нет $LIA операций, и пул и дневной лимит не'не использован. Попробуйте ваши ключи и обработку ошибок там в первую очередь.
#Сделайте вознаграждения справедливыми
- Решайте на сервере. Что заработало, должно исходить из того, что видело ваше сервер (оконченная игра, проверенное видео), а не из того, что говорит страница.
- Заботьтесь о своих собственных ограничениях также, на игрока и в день, так что один игрок может'не опустошать бассейн.
- Объясните почему. The
reasonотображается в игроке's активность под вашим приложением'имя.
Автоматически переведено. Английский — источник истины. Читать на английском