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/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>