Платные плагины Rust, загружаются только на платящих серверах.
Один веб-запрос из Oxide или Carbon. Один сервер на ключ.
Тариф Free · Без банковской карты · Готово за минуты
Пишете код с ИИ-агентом? Вставьте один промпт- C#
- Oxide / uMod
- Carbon
- Tebex
- Stripe
- Gumroad
- Discord
Создано под то, как вы продаёте.
По-прежнему один .cs
Встроенный в Oxide webrequest, никаких DLL в поставке.
webrequest.EnqueueОдин ключ — один сервер
Лимит по IP: 1, 3 или 10.
TOO_MANY_IPSОтзыв, приостановка, блокировка
Ключ, IP сервера или диапазон.
Ключи из вашего магазина
Tebex, Stripe, Gumroad, Payhip и другие.
Поддержку ведёт Discord
Покупатели активируют ключи; команда получает оповещения о раздаче.
Sentinel видит, как он кочует
Отмечает ключи, которые прыгают между серверами.
Любой тарифГотово до следующего релиза.
- 1Создать бесплатный аккаунт
- 2Подключите свой магазин
- 3Один webrequest при загрузке
[Info("MyPlugin", "You", "1.2.0")]
public class MyPlugin : RustPlugin
{
const string ApiKey = "slk_..."; // can only validate licenses
void OnServerInitialized()
{
var body = JsonConvert.SerializeObject(new { licenseKey = (string)Config["LicenseKey"] });
var headers = new Dictionary<string, string> { ["Authorization"] = "Bearer " + ApiKey, ["Content-Type"] = "application/json" };
webrequest.Enqueue("https://api.sunlicense.com/api/v1/validate", body, (code, response) =>
{
if (code != 200) return; // no answer is not a no: keep running
var result = JObject.Parse(response);
if ((bool)result["valid"]) Puts("License valid, loading");
else { PrintError($"License denied: {result["code"]}"); Interface.Oxide.UnloadPlugin(Name); }
}, this, RequestMethod.POST, headers);
}
}Вопросы и ответы.
Как не дать раздавать мой плагин Rust?
Плагин Rust распространяется как файл .cs, поэтому любой решительный человек может вырезать проверку, и никакое лицензирование этого не изменит. Ключ на каждого покупателя с лимитом по IP делает раздачу видимой и позволяет её остановить: ключ работает на сервере покупателя, тот же ключ на другом сервере отклоняется с TOO_MANY_IPS, а утёкший ключ можно отозвать, чтобы все копии остановились при следующей проверке.
Это работает с Oxide (uMod) и Carbon?
Да. Проверка — это один HTTPS-запрос к REST API SunLicense, сделанный через хелпер webrequest, который уже есть у плагинов Oxide, а Carbon запускает плагины Oxide. На сервер покупателя ничего дополнительно не устанавливается. Есть и .NET SDK, но для плагина из одного файла REST-запрос проще.
Как ограничить плагин Rust одним сервером на покупку?
Задайте в политике лимит по IP, равный 1. Первый сервер, проверивший ключ, занимает слот, а любой другой адрес отклоняется с TOO_MANY_IPS. Когда покупатель переезжает на новую машину, старый адрес освобождается сам через 30 дней без использования, покупатель может освободить его в клиентском портале (Lite и Standard), или вы освободите его на странице лицензии.
Что будет в день вайпа, если SunLicense недоступен?
Решает ваш плагин. Неудачный запрос — это не отказ, поэтому в примере плагин остаётся загруженным, когда ответа нет, и выгружается, только когда SunLicense говорит, что ключ недействителен. Проверки лицензий работают на отдельном сервисе, независимом от панели управления.
Защитите следующий релиз.
- Тариф Free
- Без банковской карты
- Отмена в любой момент
SunLicense