RU UA EN
Головна Увійти Значки клану Розміщення Додати сервер

API голосування L2King — бонуси за голос на вашому сервері

Як це працює

Гравці голосують за ваш сервер на L2King раз на 12 годин. Сервер перевіряє голос через API та видає нагороду в грі — так гравці повертаються щодня. Голоси видно на сторінці проєкту та у списках L2King, а кнопка голосування на вашому сайті дає знижку 25% на Elite, Top і VIP.

ℹid проєкту та ключ API — в особистому кабінеті, вкладка «Голоси та кнопки».

Ключ API

Увійдіть в особистий кабінет L2King → вкладка «Голоси та кнопки». Там для кожного вашого проєкту: id, ключ API, готова адреса API, посилання на сторінку голосування та конструктор кнопок. Ключ секретний — зберігайте його лише в конфігу сервера.

Відкрити «Голоси та кнопки»

Перевірка голосу

Чи голосував гравець за останні 12 годин — за IP або за ніком.

BASHGET /api/votes/ID?key=…&ip=… | &nick=…
# за 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) — для пакетної видачі нагород за ніками.

BASHGET /api/votes/ID?key=…&hours=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 голосів.

BASHGET /api/votes/ID?key=…&total=1
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-збірці:

JAVAL2KingVote.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 гравця підставте під свою збірку:

JAVA.vote
// Команда .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

Для сайту або веб-панелі сервера — перевірка за ніком:

PHPvote.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 тимчасово не відповів, нагороду не видавайте — гравець повторить пізніше.

Помилки

403bad project id or keyНевірний id проєкту або ключ API
—немає відповідіL2King недоступний: нагороду не видавайте, гравець повторить пізніше

Кнопка «Голосуй за нас»

Кнопка голосування на сайті сервера дає знижку 25% на Elite, Top і VIP та веде гравців на сторінку голосування. Готовий код із вашим проєктом, стилем і розміром — у конструкторі кнопок в особистому кабінеті. Кількість голосів за місяць на кнопці оновлюється сама.

HTMLПриклад коду (ВАШ_ПРОЄКТ — адреса вашого проєкту на L2King)
<a href="https://l2king.net/vote/ВАШ_ПРОЄКТ" target="_blank" rel="noopener"><img src="https://l2king.net/buttons/vote/ВАШ_ПРОЄКТ/v-dark-ru?w=193&h=60" width="193" height="60" alt="Голосуй за ВАШ_ПРОЄКТ — L2KING.NET" style="border:0"></a>