SunLicenseEntrar
Para desenvolvedores de addons de Garry's Mod

Seu addon de Garry's Mod, nos servidores que pagaram.

Cada comprador recebe uma chave, validada no servidor com o HTTP do próprio GMod.

Criar conta grátis

Plano Free · Sem cartão de crédito · Pronto em minutos

Programa com um agente de IA? Cole um prompt
  • Lua
  • Garry's Mod
  • Tebex
  • Stripe
  • Gumroad
  • Payhip
  • Discord
O que você recebe

Feito para o seu jeito de vender.

Um arquivo Lua

Assíncrono, no servidor, com o HTTP do próprio GMod.

sunlicense.lua

Servidores por licença

Um servidor ou cinco, por ID ou IP.

TOO_MANY_IPS

Revogue ou bloqueie

Uma chave, um IP de servidor ou uma faixa.

Venda onde quiser

Tebex, Stripe, Gumroad, Payhip e mais.

Cargos de comprador no Discord

Resgate com o e-mail da compra; revogar remove.

O Sentinel fica de olho no compartilhamento

Sinaliza chaves que pulam de servidor em servidor.

Todos os planos
Como funciona

No ar antes da sua próxima versão.

  1. 1Criar uma conta grátis
  2. 2Conecte sua loja
  3. 3Valide ao carregar o mapa
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)
Perguntas frequentes

Perguntas e respostas.

Como protejo um addon pago de Garry's Mod contra vazamentos?

Addons são distribuídos em Lua, então qualquer pessoa determinada consegue ler e editar uma validação, e nenhum serviço de licenciamento muda isso. Uma chave por comprador te dá controle: você vê quais servidores usam cada chave, uma chave compartilhada ou vazada pode ser revogada ou ter seus servidores bloqueados, e os servidores pagantes nunca são afetados. Ofuscar a validação dá mais trabalho para removê-la.

O SDK de Lua funciona no Garry's Mod?

Sim. O sunlicense.lua detecta o Garry's Mod e envia a validação com a função HTTP do GMod, de forma assíncrona, para o servidor não travar. Rode só no servidor: a chave de API que ele usa só pode validar licenças, mas não tem nada a fazer em arquivos enviados aos jogadores.

Quais lojas emitem chaves automaticamente?

Tebex, Stripe, Gumroad, Payhip, Lemon Squeezy, Ko-fi, itch.io, WooCommerce e mais algumas se conectam direto, e a maioria revoga a chave no reembolso. Para qualquer outro lugar, emita chaves pelo painel, pela CLI sunlicense ou pela API.

O que o comprador faz quando troca de hospedagem?

Eles mesmos redefinem a vaga de máquina do servidor antigo com My licenses no seu Discord, ou no portal do cliente (Lite e Standard), uma vez por dia por padrão. Com um limite de IP, um endereço que ficou 30 dias sem uso libera a vaga sozinho, e você pode liberar uma a qualquer momento na página da licença.

Proteja sua próxima versão.

  • Plano Free
  • Sem cartão de crédito
  • Cancele quando quiser