Авторазбан без входа на сервер

Реализовали небольшую фичу, которая позволит вашим игрокам купить разбан без входа на сервер. Интеграция настолько проста, что нам даже неловко называть это модулем :slight_smile:

Установка

Создать файл /addons/anyname/lua/igs/extensions/unban.lua со следующим содержимым:

local UNBAN_PRICE = 149

local function unban(steamid64)
	RunConsoleCommand("ulx", "unban", util.SteamIDFrom64(steamid64))
end

hook.Add("IGS.IncomingMessage", "auto_unban", function(d, method)
	if method == "payment.UpdateStatus" and d.method == "pay" and d.extraData == "UNBAN" and d.orderSum >= UNBAN_PRICE then
		local do_unban = function() unban(d.SteamID64) end

		local pl = player.GetBySteamID64( d.SteamID64 )
		if pl then
			pl:AddIGSFunds(-d.orderSum, "Авторазбан", do_unban)
		else
			IGS.Transaction(d.SteamID64, -d.orderSum, "Auto unban", do_unban)
		end
	end
end)

В коде выше отредактируйте стоимость и функцию разбана (если у вас не ULX).

Затем разместите ссылку оплаты разбана у себя в группе или на форуме в теме про разбан и после оплаты счета сервер автоматически снимет блокировку.

Ссылка на покупку разбана: https://gm-donate.net/donate/5?extra=UNBAN&sum=149&description=Покупка_разбана_на_проекте

В ссылке измените 5 на ID вашего проекта, sum должен совпадать с стоимостью разбана в файле, а description быть любым (будет отображен на странице оплаты)

2 лайка

Инструкция перенесена с Telegram и немного обновлена

Скрипт немного обновлен. Добавлена проверка, находится ли игрок в настоящий момент на сервере. На некоторых проектах забаненный игрок мог находиться на сервере, в результате чего деньги списывались с задержкой и баланс мог уйти в минус

как реализовать подобное для снятия gban?

local UNBAN_PRICE = 149

local function unban(steamid64)
    GBan.RemoveBanPlayerOffline(util.SteamIDFrom64(steamid64))
end

hook.Add("IGS.IncomingMessage", "auto_unban", function(d, method)
	if method == "payment.UpdateStatus" and d.extraData == "UNBAN" and d.orderSum >= UNBAN_PRICE then
		local do_unban = function() unban(d.SteamID64) end

		local pl = player.GetBySteamID64( d.SteamID64 )
		if pl then
			pl:AddIGSFunds(-d.orderSum, "Авторазбан", do_unban)
		else
			IGS.Transaction(d.SteamID64, -d.orderSum, "Auto unban", do_unban)
		end
	end
end)
2 лайка

Частично связанная тема: