• Приветствуем на сайте, Гость! Обязательно ознакомьтесь с условиями и правилами Публичной оферты Проекта 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

NS 1.1 HL2RP Создание классов для фракии ОТА на подобии классов фракции ГО

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

Scoot

Пользователь
Регистрация
12 Мар 2015
Сообщения
200
Реакции
0
Баллы
27
Хочу узнать как создать классы для фракции ОТА, хотел сделать по шаблону ГО, но немного не понял. Вот на этом моменте я встрял.
Код:
function playerMeta:isCombine()
        return SCHEMA:isCombineFaction(self:Team())
    end

    function playerMeta:getCombineRank()
        local name = self:Name()

        for k, v in ipairs(SCHEMA.scnRanks) do
            local rank = string.PatternSafe(v)

            if (name:find("[%D+]"..rank.."[%D+]")) then
                return v
            end
        end

        for k, v in ipairs(SCHEMA.rctRanks) do
            local rank = string.PatternSafe(v)

            if (name:find("[%D+]"..rank.."[%D+]")) then
                return v
            end
        end

        for k, v in ipairs(SCHEMA.unitRanks) do
            local rank = string.PatternSafe(v)

            if (name:find("[%D+]"..rank.."[%D+]")) then
                return v
            end
        end

        for k, v in ipairs(SCHEMA.eliteRanks) do
            local rank = string.PatternSafe(v)

            if (name:find("[%D+]"..rank.."[%D+]")) then
                return v
            end
        end
    end

    function playerMeta:isCombineRank(rank)
        if (type(rank) == "table") then
            local name = self:Name()

            for k, v in ipairs(rank) do
                local rank = string.PatternSafe(v)

                if (name:find("[%D+]"..rank.."[%D+]")) then
                    return v
                end               
            end

            return false
        else
            return self:getCombineRank() == rank
        end
    end
 
Хотя уже не надо, разобрался. Но остается 1 вопрос. Когда я создал персонажа данной фракции и заход в него, то сверху в F1 есть меню классы, для чего оно?
 
И при смене персонажей, при условии что был выдан класс элитного солдата модель возвращается на модель дефолтного класса, как это исправить?
 
...Когда я создал персонажа данной фракции и заход в него, то сверху в F1 есть меню классы, для чего оно?
Класс персонаж есть ничто иное, как этакий «распределитель». С помощью данной фичи можно выдавать, например, соответствующие права для определенного класса (как пример: Если класс есть DvL, то этот DvL может, например, включать/выключать раздатчик провизии).
В NS данная вещица работает чуть хуже, чем не работает, потому использовать ее стоит на свой страх и риск.

Пример создания класса можно просмотреть на GitHub-е Chessnut-а по схеме hl2rp.
Хочу узнать как создать классы для фракции ОТА, хотел сделать по шаблону ГО, но немного не понял. Вот на этом моменте я встрял.
Код:
...code...
Данный код не есть впиливание классов.

Мета-Функция getCombineRank() – проверяет наличие валидного (существующего) ранга Юнита по конфигу, заданного в sh_config.lua стандартной hl2rp схемы.
Код:
-- Rank information.
SCHEMA.rctRanks = {"RCT"}
SCHEMA.unitRanks = {"05", "04", "03", "02", "01", "OfC"}
SCHEMA.eliteRanks = {"EpU", "DvL", "SeC"}
SCHEMA.scnRanks = {"SCN", "CLAW.SCN"}

Мета-Функция isCombineRank(rank) – задает возможность проверить, является ли персонаж одним из рангов, используемых в sh_config.lua стандартной hl2rp схемы.
В классах:
Код:
function CLASS:onCanBe(client)
[INDENT]return client:isCombineRank(SCHEMA.unitRanks)[/INDENT]
end
В сканерах:
Код:
if (nut.plugin.list.scanner and client:isCombineRank(self.scnRanks)) then
[INDENT]...[/INDENT]
end
В диспатче:
Код:
    function SCHEMA:isDispatch(client)
        return client:isCombineRank(self.eliteRanks) or client:isCombineRank(self.scnRanks)
    end
И далее.

И при смене персонажей, при условии что был выдан класс элитного солдата модель возвращается на модель дефолтного класса, как это исправить?
Данное вполне возможно исправить, если перелопатить существующую систему автоматической замены модели по рангу. Если быть точным, то при смене класса ранг сбрасывается (точнее обрабатывается заново), тем самым выставляя модель по рангу.
Прогуляйся по sh_config.lua стандартной hl2rp схемы, да по его путям попросту выпили замену модели. Авось и прокатит.
Код:
SCHEMA.rankModels = {
    ["RCT"] = "models/police.mdl",
    [SCHEMA.unitRanks] = "models/dpfilms/metropolice/hl2concept.mdl",
    ["OfC"] = "models/dpfilms/metropolice/policetrench.mdl",
    ["EpU"] = "models/dpfilms/metropolice/elite_police.mdl",
    ["DvL"] = "models/dpfilms/metropolice/blacop.mdl",
    ["SeC"] = "models/dpfilms/metropolice/phoenix_police.mdl",
    ["SCN"] = "models/combine_scanner.mdl",
    ["CLAW.SCN"] = "models/shield_scanner.mdl"
}
 
Последнее редактирование:
Но если выпилить замену модели, то при смене имени модель не пропишется. Я просто хотел сделать чтобы меньше прописывать в чат при добавлении во фракцию.
 
Статус
В этой теме нельзя размещать новые ответы.
Главная Регистрация
Назад
Сверху