Welcome to Сообщество игровых серверов NETZONA.ORG

Присоединяйтесь к нам сейчас, чтобы получить доступ ко всем нашим функциям. Зарегистрировавшись и войдя в систему, вы сможете создавать темы, публиковать ответы в существующих темах, давать репутацию другим участникам, получать собственный личный мессенджер и многое другое. Это также быстро и совершенно бесплатно, так чего же вы ждете?
  • Приветствуем на сайте, Гость! Обязательно ознакомьтесь с условиями и правилами Публичной оферты Проекта 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

Проблема Нужен плагин на броню (Stalker)

Статус
В этой теме нельзя размещать новые ответы.

BlackMajor

Пользователь
Регистрация
19 Мар 2017
Сообщения
11
Реакции
0
Баллы
13
Возраст
23
Пол
Киньте скрипт или плагин для создание брони буду очень благодарен!
 

BlackMajor

Пользователь
Регистрация
19 Мар 2017
Сообщения
11
Реакции
0
Баллы
13
Возраст
23
Пол
Для ореха забыл я написать.. (NutScript)
 

Zer0 The 0

Пользователь
Регистрация
21 Мар 2017
Сообщения
5
Реакции
0
Баллы
13
Возраст
24
Адрес
Parts Unknown
Пол
Я бы кинул, но я не умею писать скрипты )
 

ASHERA

Пользователь
Регистрация
7 Янв 2017
Сообщения
96
Реакции
0
Баллы
19
Клан-тег
OstlandProject
Пол
Мужской
Тебе нужна именно броня с уменьшением урона,или просто броня как скин?
 

DrodA

Пользователь
Проверенный
Регистрация
16 Фев 2017
Сообщения
128
Реакции
0
Баллы
30
Адрес
Sweden
Могу только предложить что-то этакое на уровне базы:
Код:
// Основная информация о предмете
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
Калякал на ходу, потому стоит вопрос о точной работоспособности.
 

BlackMajor

Пользователь
Регистрация
19 Мар 2017
Сообщения
11
Реакции
0
Баллы
13
Возраст
23
Пол
вместо nill ставить модельку так?
 

BlackMajor

Пользователь
Регистрация
19 Мар 2017
Сообщения
11
Реакции
0
Баллы
13
Возраст
23
Пол
вместо nill ставить модельку так?
 

BlackMajor

Пользователь
Регистрация
19 Мар 2017
Сообщения
11
Реакции
0
Баллы
13
Возраст
23
Пол
Могу только предложить что-то этакое на уровне базы:
Код:
// Основная информация о предмете
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)
 

DrodA

Пользователь
Проверенный
Регистрация
16 Фев 2017
Сообщения
128
Реакции
0
Баллы
30
Адрес
Sweden
вместо nill ставить модельку так?
Вместо nill впихивай путь до требуемой модели.​
куда впихнуть client:SetArmor(0)
Для более рабочей системы брони не стоит использовать SetArmor в целях наиболее лучшей работоспособности.
SetArmor вполне можно использовать только в том случае, если на предмет воздействуют данные самой брони (item:setData("armor", 100) / item:getData("armor", 100)). Если правильно подставить и использовать данные вещицы (включая hook-функции), то можно получить вполне себе адекватную и работоспособную выдачу брони игроку/персонажу.

Но лучше всего использовать иной метод «подключения» брони к форме. Этак что-то на уровне резиста (шкалирования) урона по типу самого урона.​
 

BlackMajor

Пользователь
Регистрация
19 Мар 2017
Сообщения
11
Реакции
0
Баллы
13
Возраст
23
Пол
Вместо nill впихивай путь до требуемой модели.​

Для более рабочей системы брони не стоит использовать SetArmor в целях наиболее лучшей работоспособности.
SetArmor вполне можно использовать только в том случае, если на предмет воздействуют данные самой брони (item:setData("armor", 100) / item:getData("armor", 100)). Если правильно подставить и использовать данные вещицы (включая hook-функции), то можно получить вполне себе адекватную и работоспособную выдачу брони игроку/персонажу.

Но лучше всего использовать иной метод «подключения» брони к форме. Этак что-то на уровне резиста (шкалирования) урона по типу самого урона.​
Сможешь подкинуть? И куда впихнуть
 

DrodA

Пользователь
Проверенный
Регистрация
16 Фев 2017
Сообщения
128
Реакции
0
Баллы
30
Адрес
Sweden
Цельный плагин под данное пилить, боюсь, не буду.
Попробуй подергать Неона. У него уж точно найдется решение.
 
Последнее редактирование:

BlackMajor

Пользователь
Регистрация
19 Мар 2017
Сообщения
11
Реакции
0
Баллы
13
Возраст
23
Пол
Цельный плагин под данное пилить, боюсь, не буду.
Попробуй подергать Неона. У него уж точно найдется решение.
Хорошо..А если сделать отдельно броню для специально фракций?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху Снизу