Отключить автовосстановление донат услуг для наборного персонала

Как сделать так, чтобы когда человек покупает вип допустим, а потом встает на модератора(не донатного) чтобы не снимался модератор(тоесть чтобы не выдавался вип, вместо модератора)
Админка Fadmin

Чем ниже услуга в sh_additems.lua, тем она важнее. Если у игрока будет куплено 2 группы, то выдаваться будет только та, которая в файле ниже (т.е. добавлена позже)

Так он говорит если она не продаётся, например наборная привилегия, то без снятия услуги не обойтись🤔

упустил этот момент. В таком случае 2 варианта:

  1. Снять VIP
  2. Добавить в продажу модератора, сделав его :SetHidden и выдать эту услугу всем модераторам через панель

Как убрать VIP?

отключить покупку у игрока через панель на сайте

P.S. Для ServerGuard в IGS добавлен хук, который позволяет контролировать снятие прав

Пример использования

-- addons/igs-modification/lua/autorun/server/igs_skip_sg.lua
hook.Add("IGS.SkipSGRestore", "skip_sg_admin", function(pl)
	if serverguard.player:HasPermission(pl, "admin") then
		return true
	end
end)

Было бы хорошо изменить существующую логику, но это вопросы к создателю(-лям) автодоната)

Т.е. вместо iGroupWeight ( в конфиге вручную прописывать “важность” привилегии ) сделать автоматический парсинг:

  • Для FAdmin, BAdmin, … использовать “immunity”
  • Для ULX через “унаследование” ( так как там нет иммунитета )

И потом уже проверять по новому приоритету перед выдачей привилегии.
(а не после, как сейчас)
image

2 лайка

В самом начале мы думали как это правильнее реализовать и почему-то остановились на идее с “весом групп”. Вскоре все админки, кроме ULX переделали так, чтобы убрать iGroupWeight – сделали, что порядок предмета в sh_additems и есть этим самым приоритетом.

Но идея с immunity и унаследованием не оставляет меня. Если хочешь – можешь попробовать реализовать. Напиши в ЛС, за сколько :moneybag: готов взяться за это

1 лайк

Вариант 1

Если в автодонате продается И vip И superadmin, то скорее всего, код VIP предмета находится ВЫШЕ, чем код superadmin предмета. Чем позже создается предмет, тем больше у него приоритет выдачи в случае, если у игрока куплено несколько групп

Вариант 2

Если же VIP продается, а SuperAdmin нет, при этом игроку сбрасывает SuperAdmin до VIP, то это тоже срабатывает система восстановления прав. Автодонат думает, что у игрока “слетела” випка, которая числится у него в покупках и восстанавливает ее. SuperAdmin для автодоната в таких случаях “непонятная штука” и он с ним никак не считается


Во втором случае нужно либо убрать из покупок у игрока VIP, чтобы он не восстанавливался, либо добавить SuperAdmin в sh_additems ниже, чем VIP. Затем всем, кому нужно выдать superadmin просто через автодонат выдавай его. Заодно и сроки действия будут работать (если их указать)

На предмет SuperAdmin можно повесить :SetHidden, чтобы он не появлялся в donate меню и его нельзя было купить.

Хочу поменять ulx роль игроку, который ранее купил другую ulx роль в автодонате, но мешает автовосстановление. Сразу скажу у меня на сервере не папки igs-core в которой, как я понял, есть код для автовосстановления. Так что мне делать? Качать эту папку на сервер в надежде, что ничего не полетит или же есть другой способ?

Концепция в том, что группы, которые продаются не должны выдаваться вручную. У меня за все время, пока еще проект существовал, было всего 1-2 случаев, когда мне нужно было зайти в панель и вручную выдать условный group_vip_30d

Группы для персонала у меня были отдельные, они не продавались в автодонате и, соответственно, не слетали, если у игрока этой покупки не было. Их можно было выдавать напрямую через ulx и ни о чем не беспокоиться

Если кто-то выдает персоналу донат группы, то это скорее фундаментальная ошибка структуры прав доступа на проекте, чем проблема GMD. Но даже в таком случае можно создать консольную команду выдачи прав для персонала, но поскольку большинство делает все правильно и подобные жалобы большая редкость, то делать детуры для админок, которые могут сломаться после любого обновления админки довольно избыточно