ENT.AdminOnly как добавить такую же иконку?

Привет, допустим у нас есть функция AdminOnly для ентити. Хотел такое же сделать, но для другой привилегии и с другой иконкой. Тоесть для AdminOnly - у нас одна иконка, а для допустим ENT.OtheOnly - другая совсем… Как нужно переписать sandbox или что делать??

Прямого ответа на вопрос дать не могу, но могу подсказать, что фундаментально правильнее назвать поле ENT.IconPath / .IconUrl / IconModel с возможностью указания кастомной иконки для предмета, а не статичной для всех с определенным свойством

Просто например сделаешь поле .OnlyCP, стандартная картинка будет с наручниками, а поменять на условно дубинку или варнинг ты не сможешь.

Зато с IconPath сможешь написать скрипт, который выставит всем .OnlyCP это свойство, чтобы не копипастить путь к иконке везде, если не хочешь. Либо просто в глобальную переменную вынести путь к иконке и легко менять при необходимости

Не советую вмешиваться в файлы стандартных гейммодов, либо добавлять их в бэкап. Они всегда должны обновляться с обновой гмода через app_update 4020 validate

Все изменения должны быть реализованы в виде модулей, либо пулл реквестов в официальный репозиторий.

Была у нас в поддержке эпидемия людей «автодонат не работает», клиентов оверхостинга. Оказалось, что оверхостинг использовал свои измененные или устаревшие файлы гейммодов, и в функции http.Fetch (или http.Post) не передавались хедеры (а в свежих версиях должны). Вины гмд нет, но для пользователя кто будет виноват, если не мы?

С телефона не уверен, что то нашел, но дорылся до этого:

Если буду у компа и будет настроение, то поковыряю. Но на меня не рассчитывайте

Короче попробуй для энтити прописать ENT.IconOverride = путь к материалу

Но не факт, что сработает. Кажется оно саму основу перерисовывает.

И если не сработает, то надо оверрайдить Paint функцию в vgui компоненте ContentIcon

Но лучше всего сделать пулл реквест и потерпеть. Поле назвать .SubIcon = path

ENT.IconPath - не работает, также с IconOverride

Я 40 минут искал и расписывал все, а ты даже в слова не вчитывался…

Отметил тему решенной, хоть это не совсем так, потому что без прямого решения. Если кто-то может сделать пулл реквест с добавлением кастом филда по типу IconOverride, но для SubIcon, например @Karlend @fennec, то сделайте, пожалуйста и отпишите здесь.

@Heretic-Anthem @Shapka @doxzter @Faulin

1 лайк

Мне кажется, что лучше всего это делать в хуке SpawnMenuOpen. Через g_SpawnMenu.CreateMenu можно получить всех children, после чего уже что угодно делать с иконками

Там энивей оверрайдить Пейнт придется без пулл реквеста. Оно там не модульно рисуется. Захардкожено, к сожалению.

Можно оверрайд сделать так, чтобы после отрисовки оригинального пейнта рисовался «наш», но разве что как временный костыль. Все равно нужно делать реквест по хорошему

2 лайка