SunLicenseВойти
Для разработчиков аддонов Garry's Mod

Ваш аддон Garry's Mod, на серверах, которые заплатили.

Каждый покупатель получает ключ, который проверяется на сервере через собственный HTTP GMod.

Создать бесплатный аккаунт

Тариф Free · Без банковской карты · Готово за минуты

Пишете код с ИИ-агентом? Вставьте один промпт
  • Lua
  • Garry's Mod
  • Tebex
  • Stripe
  • Gumroad
  • Payhip
  • Discord
Что вы получаете

Создано под то, как вы продаёте.

Один Lua-файл

Асинхронно, на сервере, через собственный HTTP GMod.

sunlicense.lua

Серверы на лицензию

Один сервер или пять, по ID или IP.

TOO_MANY_IPS

Отзыв или блокировка

Ключ, IP сервера или диапазон.

Продавайте где угодно

Tebex, Stripe, Gumroad, Payhip и другие.

Роли покупателей в Discord

Активация по email покупки; отзыв снимает роль.

Sentinel следит за раздачей

Отмечает ключи, которые прыгают с сервера на сервер.

Любой тариф
Как работает

Готово до следующего релиза.

  1. 1Создать бесплатный аккаунт
  2. 2Подключите свой магазин
  3. 3Проверка при загрузке карты
lua/autorun/server/myaddon_license.lua
local SunLicense = include("myaddon/sunlicense.lua")
local licenseVar = CreateConVar("myaddon_license", "", FCVAR_ARCHIVE + FCVAR_PROTECTED)

hook.Add("InitPostEntity", "MyAddon.License", function()
    local client = SunLicense.new({ baseUrl = "https://api.sunlicense.com", token = MYADDON.ApiKey })
    client:validate(licenseVar:GetString(), { host = MYADDON.ServerId() }, function(ok, status, body)
        if ok then
            MsgC(Color(120, 210, 140), "[MyAddon] License valid, loading\n")
            MYADDON.Start()
        elseif status == 400 then
            MsgC(Color(255, 128, 128), "[MyAddon] License denied: ", body:match('"code":"([%w_]+)"') or "?", "\n")
        else
            MYADDON.Start() -- no answer is not a no: keep running
        end
    end)
end)
Вопросы и ответы

Вопросы и ответы.

Как защитить платный аддон Garry's Mod от утечек?

Аддоны распространяются в виде Lua, поэтому любой решительный человек может прочитать и изменить проверку, и никакой сервис лицензирования этого не изменит. Ключ на каждого покупателя даёт вам контроль: вы видите, какие серверы используют каждый ключ, общий или утёкший ключ можно отозвать или заблокировать его серверы, а платящие серверы никогда не затрагиваются. Обфускация проверки делает её удаление трудоёмким.

Работает ли Lua SDK в Garry's Mod?

Да. sunlicense.lua распознаёт Garry's Mod и отправляет проверку через HTTP-функцию GMod асинхронно, чтобы сервер не зависал. Запускайте его только на сервере: API-ключ, который он использует, может только проверять лицензии, но ему не место в файлах, которые отправляются игрокам.

Какие магазины выдают ключи автоматически?

Tebex, Stripe, Gumroad, Payhip, Lemon Squeezy, Ko-fi, itch.io, WooCommerce и ещё несколько подключаются напрямую, и большинство из них отзывает ключ при возврате. Для всего остального выдавайте ключи из панели управления, через CLI sunlicense или API.

Что делать покупателю при смене хостинга?

Они сами сбрасывают слот устройства старого сервера через My licenses в вашем Discord или в клиентском портале (Lite и Standard), по умолчанию раз в день. С лимитом по IP адрес, не использовавшийся 30 дней, сам освобождает слот, а вы можете освободить любой слот на странице лицензии.

Защитите следующий релиз.

  • Тариф Free
  • Без банковской карты
  • Отмена в любой момент