Як це працює
Гравці голосують за ваш сервер на L2King раз на 12 годин. Сервер перевіряє голос через API та видає нагороду в грі — так гравці повертаються щодня. Голоси видно на сторінці проєкту та у списках L2King, а кнопка голосування на вашому сайті дає знижку 25% на Elite, Top і VIP.
Ключ API
Увійдіть в особистий кабінет L2King → вкладка «Голоси та кнопки». Там для кожного вашого проєкту: id, ключ API, готова адреса API, посилання на сторінку голосування та конструктор кнопок. Ключ секретний — зберігайте його лише в конфігу сервера.
Відкрити «Голоси та кнопки»Перевірка голосу
Чи голосував гравець за останні 12 годин — за IP або за ніком.
# за IP — відповідь 1 або 0
curl "https://l2king.net/api/votes/ID?key=KEY&ip=1.2.3.4&format=txt"
# за IP — відповідь JSON
curl "https://l2king.net/api/votes/ID?key=KEY&ip=1.2.3.4"
{"voted":true,"time":"2026-10-07T23:09:32+00:00","vote_time":1791414572,"server_time":1791414600,"hours":12}
# за ніком — так само
curl "https://l2king.net/api/votes/ID?key=KEY&nick=PlayerNick"Список голосів
Усі голоси за N годин (від 1 до 168) — для пакетної видачі нагород за ніками.
curl "https://l2king.net/api/votes/ID?key=KEY&hours=24"
{"project":184,"hours":24,"votes":[{"id":64,"nick":"PlayerNick","time":"2026-10-07T23:09:32+00:00"}]}
# рядком: id;нік;час
curl "https://l2king.net/api/votes/ID?key=KEY&hours=1&format=txt"
64;PlayerNick;2026-10-07 23:09:32Лічильники проєкту
Скільки всього голосів, за місяць і за 12 годин — для глобальної нагороди всім онлайн за кожні N голосів.
curl "https://l2king.net/api/votes/ID?key=KEY&total=1"
{"project":184,"total":152,"month":37,"last12h":9,"server_time":1791418200}Команда .vote (Java)
Клас для перевірки голосу — без зовнішніх бібліотек, працює на будь-якій Java-збірці:
// L2King: перевірка голосу гравця за IP (L2J, aCis, Mobius та інші Java-збірки)
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
public final class L2KingVote
{
private static final int PROJECT_ID = 0; // id проєкту з особистого кабінету L2King
private static final String API_KEY = "YOUR_KEY"; // ключ з особистого кабінету, нікому не передавати
/** true, якщо з цього IP голосували на L2King за останні 12 годин */
public static boolean hasVoted(String ip)
{
try
{
final URL url = new URL("https://l2king.net/api/votes/" + PROJECT_ID + "?key=" + API_KEY
+ "&format=txt&ip=" + URLEncoder.encode(ip, "UTF-8"));
final HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setConnectTimeout(5000);
con.setReadTimeout(5000);
con.setRequestProperty("User-Agent", "L2KingVote/1.0");
try (BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream(), StandardCharsets.UTF_8)))
{
return "1".equals(in.readLine());
}
}
catch (Exception e)
{
return false; // L2King недоступний — нагороду не видаємо, гравець спробує пізніше
}
}
}Приклад команди .vote. Нагороду, зберігання часу та спосіб отримати IP гравця підставте під свою збірку:
// Команда .vote (приклад; назви методів залежать від збірки):
// aCis: player.getClient().getConnection().getInetAddress().getHostAddress()
// Mobius: player.getIPAddress()
final String ip = player.getIPAddress();
final long last = player.getVariables().getLong("L2KING_VOTE", 0);
if (System.currentTimeMillis() - last < 12 * 3600 * 1000L)
{
player.sendMessage("Нагороду за голос уже отримано. Наступна — через 12 годин.");
return true;
}
ThreadPool.execute(() ->
{
if (L2KingVote.hasVoted(ip))
{
player.getVariables().set("L2KING_VOTE", System.currentTimeMillis());
player.addItem("L2KingVote", 57, 1_000_000, player, true); // ваша нагорода
}
else
{
player.sendMessage("Спочатку проголосуйте: https://l2king.net/ua/vote/ВАШ_ПРОЄКТ");
}
});Підключення L2King у VDSystem (готовий модуль нагород для Java-збірок) — у процесі. Щойно L2King з’явиться у списку підтримуваних топів, достатньо буде увімкнути його в конфігу модуля.
Приклад PHP
Для сайту або веб-панелі сервера — перевірка за ніком:
<?php
// Веб-панель або сайт сервера: перевірка голосу за ніком
$projectId = 0; // id проєкту з особистого кабінету L2King
$key = 'YOUR_KEY'; // ключ API
$nick = $_POST['nick']; // нік гравця
$r = json_decode(file_get_contents('https://l2king.net/api/votes/' . $projectId
. '?key=' . $key . '&nick=' . urlencode($nick)), true);
if (!empty($r['voted'])) {
// голос є: видайте бонус і запам'ятайте $r['vote_time'],
// щоб не видати нагороду за один голос двічі
}Правила
- Перевіряйте голос на запит гравця (команда, кнопка в панелі), а не в циклі для всіх онлайн.
- Не частіше 120 запитів на хвилину з одного сервера.
- Один голос — одна нагорода: запам’ятовуйте час видачі (vote_time) і не видавайте повторно протягом 12 годин.
- Якщо API тимчасово не відповів, нагороду не видавайте — гравець повторить пізніше.
Помилки
bad project id or keyНевірний id проєкту або ключ APIнемає відповідіL2King недоступний: нагороду не видавайте, гравець повторить пізніше