УРА! Нашел! Вот если кто-то тоже ищет.
// Основная информация о предмете
ITEM.name = "Uniform base" // Имя/название предмета
ITEM.desc = "base desc" // Описание предмета
ITEM.category = "Uniform" // Категория предмета (используется, в основном, в бизнес-плагине)
ITEM.model = "EXAMPLE_PATH.mdl" // «Внешний вид» модели (на уровне чемоданчиков, ящичков, etc.)
ITEM.playermodel = nil // «Основной вид» модели (модель персонажа в виде самой же модели (sic!))
ITEM.width = 1 // Ширина предмета в слоте-инвентаря
ITEM.height = 1 // Высота предмета в слоте-инвентаря
ITEM.isArmor = true // Обозначение предмета, как брони (используется в дальнейшем при различных обстоятельствах)
/*
Clientside-функция.
Осуществляет возможность визуально распознать, надета ли на вас та, или иная форма.
*/
if (CLIENT) then
function ITEM:paintOver(item, w, h)
if (item:getData("equip")) then
surface.SetDrawColor(110, 255, 110, 100)
surface.DrawRect(w - 14, h - 14, 8, 8)
end
end
end
/*
Hook(shared)-функция.
При выбросе экипированного предмета, сбрасывает модель и всевозможные данные, указанные в самом коде.
*/
ITEM:hook("drop", function(item)
if (item:getData("equip")) then // Проверяется явление экипированного предмета
item:setData("equip", nil) // Возвращает equip, как nil (false).
// item.player:EmitSound("SoundPath.ogg", 80) // Звуковое сопровождение выброса предмета по желанию автора
item.player:SetModel(item.player:getChar():getModel()) // Возвращает первичную модель персонажу
end
end)
/*
shared-функция.
Позволяет снять форму.
*/
ITEM.functions.EquipUn = {
name = "Снять", // Имя/название действия (Unequip - стандарт NS)
tip = "equipTip", // Подсказка действия предмета (equipTip - стандарт NS)
icon = "icon16/cross.png", // Иконка действия предмета
onRun = function(item) // «Запуск» действия предмета при активации иного
// item.player:EmitSound("SoundPath.ogg", 80) // Звуковое сопровождение снятия предмета по желанию автора
item.player:SetModel(item.player:getChar():getModel()) // Возвращает первичную модель персонажу
item:setData("equip", false) // Возвращает equip, как false (nil).
return false // Обязательное возвращение предмета, как false для того, чтобы иной не исчез (false - статика, true - динамика (но это может быть и заблуждением))
end,
onCanRun = function(item) // Функция-проверка возможности использовать предмет при определенных и не очень обстоятельствах
return (!IsValid(item.entity) && item:getData("equip"))
end
}
/*
shared-функция.
Позволяет надеть форму.
*/
ITEM.functions.Equip = {
name = "Надеть",
tip = "equipTip",
icon = "icon16/tick.png",
onRun = function(item)
local client = item.player
local items = client:getChar():getInv():getItems()
// Проверка на явление уже надетой униформы. Предотвращает попытки надеть на себя сотни, а может и тысячи различных одежд
for k, v in pairs(items) do
if (v.id != item.id) then
local itemTable = nut.item.instances[v.id]
if itemTable.isArmor && itemTable:getData("equip") then
client:notify("Вы не можете надеть еще одну униформу")
return false
end
end
end
client:SetModel(item.playermodel) // Выставляет заданную в item.playermodel модель персонажа
// client:EmitSound("ExamplePath.ogg", 80)
item:setData("equip", true)
return false
end,
onCanRun = function(item)
return (!IsValid(item.entity) and item:getData("equip") != true)
end
}
/*
shared(server)-функция.
Задает возможность перемещать предмет из одного инвентаря в другой
*/
function ITEM
nCanBeTransfered(oldInventory, newInventory)
return true
end
/*
shared(server)-функция.
Если предмет перемещен в другой инвентарь, то он (предмет) сбрасывается с персонажа
*/
function ITEM
nTransfered()
local client = self:getOwner()
if self:getData("equip") then self:setData("equip", false) end
end
/*
shared(server)-функция.
Позволяет «сохранять» модель персонажа и возвращать ее, когда игрок загружает персонажа
*/
function ITEM
nLoadout()
if (self:getData("equip")) then
local client = self.player
client:SetModel(self.playermodel)
end
end