SunLicenseSe connecter
Pour les développeurs d'addons Garry's Mod

Votre addon Garry's Mod, sur les serveurs qui ont payé.

Chaque acheteur reçoit une clé, vérifiée côté serveur avec le HTTP de GMod lui-même.

Créer un compte gratuit

Forfait Free · Sans carte bancaire · Prêt en quelques minutes

Vous codez avec un agent IA  Collez un prompt
  • Lua
  • Garry's Mod
  • Tebex
  • Stripe
  • Gumroad
  • Payhip
  • Discord
Ce que vous obtenez

Pensé pour votre façon de vendre.

Un seul fichier Lua

Asynchrone, côté serveur, avec le HTTP de GMod lui-même.

sunlicense.lua

Serveurs par licence

Un serveur ou cinq, par ID ou par IP.

TOO_MANY_IPS

Révoquez ou bloquez

Une clé, une IP de serveur ou une plage.

Vendez où vous voulez

Tebex, Stripe, Gumroad, Payhip et d'autres.

Rôles d'acheteur sur Discord

Activation avec l'e-mail d'achat  une révocation le retire.

Sentinel surveille le partage

Signale les clés qui sautent de serveur en serveur.

Tous les forfaits
Fonctionnement

En ligne avant votre prochaine version.

  1. 1Créer un compte gratuit
  2. 2Connectez votre boutique
  3. 3Vérifiez au chargement de la map
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)
FAQ

Vos questions, nos réponses.

Comment protéger un addon Garry's Mod payant contre les fuites 

Les addons sont distribués en Lua, donc toute personne déterminée peut lire et modifier une vérification, et aucun service de licences n'y change rien. Une clé par acheteur vous donne le contrôle  vous voyez quels serveurs utilisent chaque clé, une clé partagée ou qui a fuité peut être révoquée ou ses serveurs bloqués, et les serveurs qui paient ne sont jamais touchés. Obfusquer la vérification rend son retrait plus laborieux.

Le SDK Lua fonctionne-t-il dans Garry's Mod 

Oui. sunlicense.lua détecte Garry's Mod et envoie la vérification avec la fonction HTTP de GMod, de façon asynchrone, pour que le serveur ne se fige pas. Exécutez-le uniquement côté serveur  la clé API qu'il utilise ne peut que vérifier des licences, mais elle n'a rien à faire dans des fichiers envoyés aux joueurs.

Quelles boutiques émettent des clés automatiquement 

Tebex, Stripe, Gumroad, Payhip, Lemon Squeezy, Ko-fi, itch.io, WooCommerce et quelques autres se connectent directement, et la plupart révoquent la clé en cas de remboursement. Pour tout le reste, émettez les clés depuis le tableau de bord, la CLI sunlicense ou l'API.

Que fait un acheteur quand il change d'hébergeur 

Ils réinitialisent eux-mêmes l'emplacement machine de l'ancien serveur avec My licenses sur votre Discord, ou dans le portail client (Lite et Standard), une fois par jour par défaut. Avec une limite d'IP, une adresse inutilisée depuis 30 jours libère son emplacement d'elle-même, et vous pouvez en libérer une à tout moment sur la page de la licence.

Protégez votre prochaine version.

  • Forfait Free
  • Sans carte bancaire
  • Résiliable à tout moment