Доступные ITEM методы для настройки услуг

Услуги aka итемы в IGS это объекты, наделенные определенными свойствами: выдача денег после активации, установка донат группы, проигрывание какой-то музыки и тд. Примеры таких предметов есть в файле additems_sh.lua. Пример сложной конфигурации здесь

Итемы имеют неограниченные возможности применения: все, что можно прописать в коде - можно сделать при помощи итемов. Когда-то у меня даже была идея транслировать в Twitch 24/7 табло с текстом и через донат можно было указать текст на нем, который видели бы все, кто зашел на трансляцию. И это реально, несмотря на то, что твитч и табло в жизни вообще никак не связаны с гмодом.

В стандартном sh_additems.lua файле показаны самые основные методы. Дополнительные идеи применения IGS я планирую выкладывать в группе GMD в VK и в TLG, поэтому подписывайтесь, чтобы не пропустить ничего интересного.

Обязательные

:SetPrice(iPrice)

Устанавливает цену предмета в рублях. Также ее можно устанавливать, указав третьим аргументом в IGS("Название", "uid", цена)

:SetDescription(sDescr)

Описание предмета


Популярное

:SetTerm(iDays)

Срок действия предмета в днях. По умолчанию 0 и это значит, что после перезахода права на предмет исчезнут. Обычно срок не указывают для предметов с одноразовой активацией, например, выдачу денег. Чтобы выдать предмет навсегда, используйте :SetPerma()

:SetStackable(b)

Можно ли купить такой же предмет, пока не истек срок действия предыдущего. Если у преджмета :SetTerm(0), то этот метод часто применяется, чтобы игроку не приходилось перезаходить для повторной покупки. Часто применяется для накопительных предметов, например, лимита пропов

:SetIcon(sIcon, bIsModel)

Картинка-иконка, которая отобразится рядом с названием на главной странице. Формат 1:1, желательно минимум 100 px. Вместо картинки можно указать путь к игровой модельке, только тогда вторым аргументов укажите true

:SetCategory(sCat)

Позволяет собрать несколько предметов рядом. Например, випы, премиумы, платины в категорию “Донат группы”

:SetDiscountedFrom(i)

Показывает над ценой предмета зачеркнутую указанную, а-ля скидка. По праздникам хорошо увеличивает прибыль

:SetOnActivate(fCallback)

Указывает функцию, которая выполнится, когда игрок активирует предмет. Первым аргументом функции будет сам игрок

:SetULXGroup(sUserGroup, iGroupWeight)

Устанавливает ULX группу. Если игрок купит несколько групп, ему будет выдаваться та, у которой выше iGroupWeight

:SetDarkRPMoney(iSum)

Выдает игровую валюту в режиме DarkRP. Рекомендуется использовать с :SetStackable()

:SetWeapon(sWepClass,tAmmo)

При спавне игроку выдается указанный класс оружия. К примеру :SetWeapon("weapon_frag", {Grenade = 5}) при каждом респавне будет выдавать 5 стандартных гранат. Игрок может отключить выдачу оружия при спавне, сняв галочку “Выдавать при спавне” на странице предмета и сможет брать это оружие прямо со спавнменю при необходимости

:SetMaxGlobalPurchases(iMax)

Делает лимитированный предмет. После максимального числа покупок он скроется с /donate меню

:SetRandom(tItems)

Примитивный аналог рулетки. Выдаст один из указанных предметов. Принимает таблицу с предметами, а не их UID

:SetItems(tItems)

Помещает в инвентарь пак предметов. Например, вы не хотите продавать по 1 аптечке, а минимум 5. Создайте :SetHidden() предмет “Аптечка” и 5 раз засуньте его в этот метод. В итоге 1 аптечку в магазине никто не будет видеть, но при покупке 5 они появятся в инвентаре


Базовые методы

:SetNetworked(b)

Нужна ли информация о покупке на клиентсайде? Будет в IGS.PlayerPurchases(pl) и pl:HasPurchase("uid") на клиенте

:SetImage(sUrl)

Ссылка на картинку-баннер товара. Будет отображен под информацией о товаре. Рекомендуемый размер 1000х400

:SetHidden(b)

Скрывает предмет из магазина. Такой предмет нельзя купить, но можно активировать с инвентаря. Полезно, чтобы “удалять” ненужные, но еще активные у людей итемы

:SetCanBuy(fCheck)

fCheck должен вернуть причину (строку), чтобы запретить игроку купить предмет или nil, если все ок

:SetInstaller(fCallback)

“Установщик” услуги. Выполняется при активации предмета игроком. От :SetOnActivate отличается тем, что это выполняется и при восстановлении услуги, т.е. если :SetValidator вернул false

:SetValidator(fChecker)

Если fChecker вернет false, то выполнится :SetInstaller. Обычно применяется для обязательной переустановки услуг после входа игрока. Также используется в донат группах, чтобы проверить, не слетела ли она и если да, то перевыдать

:SetHighlightColor(color)

Выделяет заголовок предмета указанным цветом

Расширения

Поддержка сторонних скриптов

:SetULXCommandAccess(cmd, tag)

Выдача доступа к ulx команде, например “ulx model”. “^” в качестве тега ограничивает игрока, чтобы он не мог применять команду на других

:SetBAdminGroup(usergroup, weight)

Выдача групп bAdmin. weight работает по аналогии с :SetULXGroup

:SetXAdminGroup(sUserGroup)

Выдача групп xAdmin

:SetEvolveRank(rank) (deprecated)

Ранг evolve

:SetFAdminGroup(sGroup, iWeight) (deprecated)

Ранг FAdmin (админка DarkRP)

:SetGlobal(b)

При покупке такого предмета он будет выдан на всех активных серверах проекта сразу. Идея: у проекта 3 сервера. Вип на 1 сервере 150 руб, на 3 — 300. Игроку выгодно и он платит больше

:SetDarkRPItem(sEntClass)

Разрешает покупать энтити с F4 меню только тому, у кого есть эта покупка

:SetDarkRPTeams(...)

Разрешает брать указанные работы только тому, у кого есть эта покупка. Тимы указываются через запятую в виде “medic”, “hobo” и тд.

:SetTool(sToolName)

Разрешает применять инструмент тулгана. Например “rope” разрешит использовать веревку

:SetEntity(sEntClass)

Разрешает спавнить энтити с спавнменю

:SetVehicle(sVehClass)

Спавн машин из спавнменю. Simfphys также поддерживаются

:SetLevels(iAmount)

Уровни для Leveling System. :SetEXP() по аналогии выдает опыт

:SetPoints(iAmount)

Поинты для 2 поинтшопа. Премиум поинты выдаются через :SetPremiumPoints(iAmount)

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