Примеры и плагины
Готовые плагины и скелеты — скачайте пакет или скопируйте код. Ключ берите в кабинете: сервер → «Ключ и API».
Онлайн (закрытая игра) — SELECT COUNT → POST /status каждые 1-5 мин.
Скачать плагин
В архиве — исходники и README. Для Minecraft при сборке кладётся и готовый TopGamRewards.jar.
Для Rust нужен пакет Oxide (не SourceMod). Для GTA есть и SA-MP, и FiveM — берите свой рантайм.
Игры без консоли (Lineage, WoW и т.п.) — PHP cron ниже или Status API.
PHP cron — онлайн (Status)
// crontab: every 2 minutes → php /path/report_online.php
<?php
$key = 'ВАШ_API_KEY'; // кабинет → Ключ и API
// TODO: подставьте свой запрос к игровой БД
$online = 0; // SELECT COUNT(*) FROM characters WHERE online = 1
$max = 5000;
$ch = curl_init('https://topgam.ru/api/v1/status');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer {$key}"],
CURLOPT_POSTFIELDS => http_build_query([
'online' => $online,
'max' => $max,
]),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 5,
]);
echo curl_exec($ch);
PHP cron — выдача наград (Rewards)
// crontab: every minute → php /path/give_rewards.php
<?php
$key = 'ВАШ_API_KEY';
$api = 'https://topgam.ru/api/v1';
$ctx = stream_context_create([
'http' => [
'header' => "Authorization: Bearer {$key}\r\nAccept: application/json\r\n",
'timeout' => 10,
],
]);
$list = json_decode(file_get_contents("$api/rewards/pending?limit=50", false, $ctx), true);
if (empty($list['rewards'])) exit;
$done = [];
foreach ($list['rewards'] as $r) {
$cmd = $r['command'] ?? null;
if (!$cmd) continue;
// TODO: выполнить $cmd на сервере (RCON / console)
// if (rcon($cmd)) $done[] = $r['id'];
$done[] = $r['id'];
}
if ($done) {
$ch = curl_init("$api/rewards/claim");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer {$key}"],
CURLOPT_POSTFIELDS => http_build_query([
'ids' => implode(',', $done),
]),
CURLOPT_RETURNTRANSFER => true,
]);
curl_exec($ch);
}
curl — проверка голоса
curl -s -H "Authorization: Bearer KEY" "https://topgam.ru/api/v1/vote/check?nick=steve"
Псевдокод Minecraft / Source
// Каждые 60 сек:
// GET /api/v1/rewards/pending + header Authorization: Bearer KEY
List pending = GET /api/v1/rewards/pending
for (Reward r : pending) {
Bukkit.dispatchCommand(console, r.command); // ник уже в команде
POST /api/v1/rewards/claim { id: r.id } + Bearer KEY
}
// Или слушайте postback и выдавайте сразу по nick.
// Таймер 60с → HTTP GET pending → ServerCommand(r.command) → claim // Postback: HTTPS endpoint на игровом VPS принимает JSON и кладёт nick в очередь выдачи.
Postback URL: кабинет → сервер → Ключ и API.
Онлайн API: кабинет → Онлайн API (для website-игр).
Условия наград: кабинет → Награды.