Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
Приветствуем на сайте, Гость! Обязательно ознакомьтесь с условиями и правилами Публичной оферты Проекта NetZONA.org: https://netzona.org/help/public-offer/
Приветствуем на сайте, Гость! Обязательно ознакомьтесь с условиями и правилами использования Ваших файлов cookie на Проекте NetZONA.org: https://netzona.org/help/cookies/
Приветствуем на сайте, Гость! Обязательно ознакомьтесь с Политикой конфиденциальности Проекта NetZONA.org: https://netzona.org/pages/privacy-policy/
Ответы на основные вопросы: https://netzona.org/threads/populjarnye-voprosy-i-otvety-na-nix.6122/
Приветствуем на сайте, Гость! Приобрести (купить) Информационную услугу (в том числе группу "Проверенный") на Проекте NetZONA.org: https://netzona.org/account/upgrades
КиньЯ бы кинул, но я не умею писать скрипты )
Я же написал что не умею скрипты писать!
Просто броня как скинТебе нужна именно броня с уменьшением урона,или просто броня как скин?
Ты делаешь DarkRP или NS?Просто броня как скин
NSТы делаешь DarkRP или NS?
// Основная информация о предмете
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 // Обозначение предмета, как брони (используется в дальнейшем при различных обстоятельствах)
/*
[INDENT]Clientside-функция.
Осуществляет возможность визуально распознать, надета ли на вас та, или иная форма.[/INDENT]
*/
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
/*
[INDENT]Hook(shared)-функция.
При выбросе экипированного предмета, сбрасывает модель и всевозможные данные, указанные в самом коде.[/INDENT]
*/
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)
/*
[INDENT]shared-функция.
Позволяет снять форму.[/INDENT]
*/
ITEM.functions.EquipUn = {
name = "Unequip", // Имя/название действия (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
}
/*
[INDENT]shared-функция.
Позволяет надеть форму.[/INDENT]
*/
ITEM.functions.Equip = {
name = "Equip",
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
}
/*
[INDENT]shared(server)-функция.
Задает возможность перемещать предмет из одного инвентаря в другой[/INDENT]
*/
function ITEM:onCanBeTransfered(oldInventory, newInventory)
return true
end
/*
[INDENT]shared(server)-функция.
Если предмет перемещен в другой инвентарь, то он (предмет) сбрасывается с персонажа[/INDENT]
*/
function ITEM:onTransfered()
local client = self:getOwner()
if self:getData("equip") then self:setData("equip", false) end
end
/*
[INDENT]shared(server)-функция.
Позволяет «сохранять» модель персонажа и возвращать ее, когда игрок загружает персонажа[/INDENT]
*/
function ITEM:onLoadout()
if (self:getData("equip")) then
local client = self.player
client:SetModel(self.playermodel)
end
end
Спасибо, но куда впихнуть client:SetArmor(0)Могу только предложить что-то этакое на уровне базы:
Калякал на ходу, потому стоит вопрос о точной работоспособности.Код:// Основная информация о предмете 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 // Обозначение предмета, как брони (используется в дальнейшем при различных обстоятельствах) /* [INDENT]Clientside-функция. Осуществляет возможность визуально распознать, надета ли на вас та, или иная форма.[/INDENT] */ 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 /* [INDENT]Hook(shared)-функция. При выбросе экипированного предмета, сбрасывает модель и всевозможные данные, указанные в самом коде.[/INDENT] */ 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) /* [INDENT]shared-функция. Позволяет снять форму.[/INDENT] */ ITEM.functions.EquipUn = { name = "Unequip", // Имя/название действия (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 } /* [INDENT]shared-функция. Позволяет надеть форму.[/INDENT] */ ITEM.functions.Equip = { name = "Equip", 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 } /* [INDENT]shared(server)-функция. Задает возможность перемещать предмет из одного инвентаря в другой[/INDENT] */ function ITEM:onCanBeTransfered(oldInventory, newInventory) return true end /* [INDENT]shared(server)-функция. Если предмет перемещен в другой инвентарь, то он (предмет) сбрасывается с персонажа[/INDENT] */ function ITEM:onTransfered() local client = self:getOwner() if self:getData("equip") then self:setData("equip", false) end end /* [INDENT]shared(server)-функция. Позволяет «сохранять» модель персонажа и возвращать ее, когда игрок загружает персонажа[/INDENT] */ function ITEM:onLoadout() if (self:getData("equip")) then local client = self.player client:SetModel(self.playermodel) end end
вместо nill ставить модельку так?
куда впихнуть client:SetArmor(0)
Сможешь подкинуть? И куда впихнутьВместо nill впихивай путь до требуемой модели.
Для более рабочей системы брони не стоит использовать SetArmor в целях наиболее лучшей работоспособности.
SetArmor вполне можно использовать только в том случае, если на предмет воздействуют данные самой брони (item:setData("armor", 100) / item:getData("armor", 100)). Если правильно подставить и использовать данные вещицы (включая hook-функции), то можно получить вполне себе адекватную и работоспособную выдачу брони игроку/персонажу.
Но лучше всего использовать иной метод «подключения» брони к форме. Этак что-то на уровне резиста (шкалирования) урона по типу самого урона.
Хорошо..А если сделать отдельно броню для специально фракций?Цельный плагин под данное пилить, боюсь, не буду.
Попробуй подергать Неона. У него уж точно найдется решение.