ITEM.name = "Обвес для оружия" ITEM.description = "Модификация для оружия" ITEM.model = "models/Items/BoxSRounds.mdl" ITEM.category = "Обвесы" ITEM.width = 1 ITEM.height = 1 ITEM.price = 0 -- Тип обвеса: scope, suppressor, grip, laser, flashlight, underbarrel ITEM.attachmentType = "scope" -- ID обвеса в TacRP (например: "reddot", "holo", "acog") ITEM.tacRPAttachmentID = "" -- Слот для установки в TacRP ITEM.tacRPSlot = "optic" -- optic, tactical, grip, muzzle -- Совместимые классы оружия (пусто = все оружие) ITEM.compatibleWeapons = {} function ITEM:GetDescription() local desc = self.description if self.attachmentType then local typeNames = { scope = "Прицел", suppressor = "Глушитель", grip = "Рукоятка", laser = "ЛЦУ", flashlight = "Фонарик", underbarrel = "Подствольник" } desc = desc .. "\n\nТип: " .. (typeNames[self.attachmentType] or self.attachmentType) end if self.tacRPSlot then local slotNames = { optic = "Оптика", tactical = "Тактический", grip = "Рукоятка", muzzle = "Дульный" } desc = desc .. "\nСлот: " .. (slotNames[self.tacRPSlot] or self.tacRPSlot) end return desc end -- Проверка совместимости с оружием function ITEM:IsCompatibleWith(weaponClass) if not self.compatibleWeapons or #self.compatibleWeapons == 0 then return true -- Совместимо со всем оружием end for _, wepClass in ipairs(self.compatibleWeapons) do if weaponClass == wepClass then return true end end return false end ITEM.functions.use = { name = "Использовать", tip = "Добавить обвес в инвентарь TacRP", icon = "icon16/add.png", OnCanRun = function(item) local client = item.player return (not IsValid(item.entity)) and IsValid(client) and client:GetCharacter() and item.invID != 0 end, OnRun = function(item) local client = item.player local attachmentID = item.tacRPAttachmentID if (CLIENT) then return false end if (not attachmentID or attachmentID == "") then client:Notify("Обвес не имеет ID для использования!") return false end -- Даём обвес в TacRP инвентарь игрока if (TacRP) then -- Проверяем, есть ли уже такой обвес (если включена блокировка дубликатов) if (TacRP.ConVars["lock_atts"] and TacRP.ConVars["lock_atts"]:GetBool() and TacRP:PlayerGetAtts(client, attachmentID) > 0) then client:Notify("У вас уже есть этот обвес!") return false -- Не удаляем предмет из инвентаря Helix, если он уже есть в TacRP end local success = TacRP:PlayerGiveAtt(client, attachmentID, 1) -- TacRP:PlayerGiveAtt может вернуть nil если обвес уже есть, или true при успехе if (success != false) then TacRP:PlayerSendAttInv(client) client:Notify("Обвес '" .. item.name .. "' добавлен в инвентарь TacRP") -- Логирование local serverlogsPlugin = ix.plugin.list["serverlogs"] if (serverlogsPlugin) then local message = string.format("%s использовал обвес '%s' (ID: %s)", client:GetName(), item.name, attachmentID) serverlogsPlugin:AddLog("ATTACHMENT_USE", message, client, { itemName = item.name, attachmentID = attachmentID }) end return true -- Удаляем предмет else client:Notify("Не удалось добавить обвес (возможно, он бесплатный или только для админов)") return false end else client:Notify("TacRP не установлен на сервере!") return false end end } -- Запрет на выброс в мир (опционально, можно убрать) -- ITEM.noDrop = true