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

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

Klevtsov

Пользователь
Регистрация
7 Июн 2016
Сообщения
4
Реакции
0
Баллы
13
Возраст
124
Прошу распишите подробно как создать фракцию в режиме nutscript. Буду благодарен!!
 
Для создания новой фракции необходимо создать новый файл в папке gamemodes\nutscript\schema\factions с произвольным названием (обычно как идентификатор), например: solder.lua
В файле указывается следующее:
Код:
FACTION.name = "Солдат" -- Это название фракции
FACTION.desc = "Есть такая профессия - родину защищать" -- Описание фракции
FACTION.color = Color(20, 150, 15) -- Цвет фракции в формате RGB
FACTION.isDefault = true -- Является ли фракцией по-умолчанию
FACTION.isPublic = true -- Является ли публичной
FACTION.pay = 1000 -- Зарплата фракции
FACTION.payTime = 700 -- Время, через которую приходит зарплата
FACTION.models = {"models/stalkertnb/bandit1.mdl", "models/stalkertnb/bandit2.mdl"} -- Список моделей фракции

function FACTION:onGetDefaultName(client) -- Хук, вызываемый при выборе профессии. Служит для назначения имени игроку
end

FACTION_SOLDER = FACTION.index -- Обязательно указывать уникальный идентификатор для каждой фракции! В данном случае идентификатор нашей фракции - FACTION_SOLDER
 
Для создания новой фракции необходимо создать новый файл в папке gamemodes\nutscript\schema\factions с произвольным названием (обычно как идентификатор), например: solder.lua
В файле указывается следующее:
Код:
FACTION.name = "Солдат" -- Это название фракции
FACTION.desc = "Есть такая профессия - родину защищать" -- Описание фракции
FACTION.color = Color(20, 150, 15) -- Цвет фракции в формате RGB
FACTION.isDefault = true -- Является ли фракцией по-умолчанию
FACTION.isPublic = true -- Является ли публичной
FACTION.pay = 1000 -- Зарплата фракции
FACTION.payTime = 700 -- Время, через которую приходит зарплата
FACTION.models = {"models/stalkertnb/bandit1.mdl", "models/stalkertnb/bandit2.mdl"} -- Список моделей фракции

function FACTION:onGetDefaultName(client) -- Хук, вызываемый при выборе профессии. Служит для назначения имени игроку
end

FACTION_SOLDER = FACTION.index -- Обязательно указывать уникальный идентификатор для каждой фракции! В данном случае идентификатор нашей фракции - FACTION_SOLDER

А как же тогда назначать на фракцию игроков и самому перейти на эту профу, если она не для всех?
 
Ранги создаются в папке gamemodes\nutscript\schema\classes
Код:
CLASS.name = "Разведчик" -- Название ранга

CLASS.faction = FACTION_STALKER -- Идентификатор фракции
CLASS.isDefault = true -- Доступна ли по-стандарту
CLASS.loadout = {} -- Выдаваемые оружия
CLASS.business = {} -- Доступные к покупке предметы

function CLASS:OnSet(client) -- Хук, вызываемый при вступлении
end
function CLASS:onCanBe(client) -- Проверка на возможность вступления
end
function CLASS:onLeave(client) -- Проверка на возможность выхода
end

CLASS_SCOUT = CLASS.index -- Уникальный идентификатор ранга
 
Ранги создаются в папке gamemodes\nutscript\schema\classes
Код:
CLASS.name = "Разведчик" -- Название ранга

CLASS.faction = FACTION_STALKER -- Идентификатор фракции
CLASS.isDefault = true -- Доступна ли по-стандарту
CLASS.loadout = {} -- Выдаваемые оружия
CLASS.business = {} -- Доступные к покупке предметы

function CLASS:OnSet(client) -- Хук, вызываемый при вступлении
end
function CLASS:onCanBe(client) -- Проверка на возможность вступления
end
function CLASS:onLeave(client) -- Проверка на возможность выхода
end

CLASS_SCOUT = CLASS.index -- Уникальный идентификатор ранга
Профессия сделана, назначил себя при помощи команды, но скин остался как у гражданского. Вопрос: Что делать?
 
Профессия сделана, назначил себя при помощи команды, но скин остался как у гражданского. Вопрос: Что делать?
Команда /charsetmodel "nick name" "model". Чтобы автоматизировать всё это, нужно корректировать файл /nutscript/gamemode/core/libs/sh_character.lua.
Можно, например, там, где nut.char.registerVar("faction",{...}) (примерно 339 строка) после client:SetTeam(value) (через 6 строчек) дописать character:setModel(nut.faction.indices[value].models[1]), тогда у игрока установится модель, первой идущая в таблице моделей для данной фракции.
Код:
    nut.char.registerVar("faction", {
        field = "_faction",
        default = "Citizen",
        onSet = function(character, value)
            local client = character:getPlayer()                     
            if (IsValid(client)) then             
                client:SetTeam(value)  
                 character:setModel(nut.faction.indices[value].models[1])   -- вот, что нужно добавить                
            end
        end,
        onGet = function(character, default)
            local faction = nut.faction.teams[character.vars.faction]

            return faction and faction.index or 0
        end,
        noDisplay = true,
        onValidate = function(value, data, client)
            if (value) then
                if (client:hasWhitelist(value)) then
                    return true
                end
            end

            return false
        end,
        onAdjust = function(client, data, value, newData)
            newData.faction = nut.faction.indices[value].uniqueID
        end
    })
У меня также в базе данных создаётся для персонажа номер той модели, выбранной при его создании, но очень тяжело ориентировать человека по файлу, который он, возможно, никогда не видел, с более чем 700 строчками, тем более наши файлы не совпадают. А вдруг я напишу что-то, а человеку это может быть не нужно.
 
Команда /charsetmodel "nick name" "model". Чтобы автоматизировать всё это, нужно корректировать файл /nutscript/gamemode/core/libs/sh_character.lua.
Можно, например, там, где nut.char.registerVar("faction",{...}) (примерно 339 строка) после client:SetTeam(value) (через 6 строчек) дописать character:setModel(nut.faction.indices[value].models[1]), тогда у игрока установится модель, первой идущая в таблице моделей для данной фракции.
Код:
    nut.char.registerVar("faction", {
        field = "_faction",
        default = "Citizen",
        onSet = function(character, value)
            local client = character:getPlayer()                    
            if (IsValid(client)) then            
                client:SetTeam(value) 
                 character:setModel(nut.faction.indices[value].models[1])   -- вот, что нужно добавить               
            end
        end,
        onGet = function(character, default)
            local faction = nut.faction.teams[character.vars.faction]

            return faction and faction.index or 0
        end,
        noDisplay = true,
        onValidate = function(value, data, client)
            if (value) then
                if (client:hasWhitelist(value)) then
                    return true
                end
            end

            return false
        end,
        onAdjust = function(client, data, value, newData)
            newData.faction = nut.faction.indices[value].uniqueID
        end
    })
У меня также в базе данных создаётся для персонажа номер той модели, выбранной при его создании, но очень тяжело ориентировать человека по файлу, который он, возможно, никогда не видел, с более чем 700 строчками, тем более наши файлы не совпадают. А вдруг я напишу что-то, а человеку это может быть не нужно.


Благодарю покорно. Но теперь еще просьба: Можете ли вы написать команды связанные с профессиями? В интернете к сожалению ничего путного не нагуглил
 
Вам нужны чат команды или функции ? А под профессиями Вы имеете в виду фракции?
Все чат команды содержатся в файлах sh_commands.lua, как в самом nutscript, так и в Вашем shema.
Код:
plywhitelist <string name> <string faction> - если честно, я не знаю, что она делает, кажется, это команда даёт возможность игроку создать персонажа с заданной фракцией.
plyunwhitelist  <string name> <string faction> - обратное действие вышеуказанной команды
beclass <string class> - команда для того чтобы получить "ранг", войти в класс:crazy:(простите меня за мой русский)
plytransfer <string name> <string faction> - я думаю из постов выше, что вы теперь знаете, что делает эта команда
Вроде бы это всё, что есть. Не густо, поэтому много надо будет писать самому.
Нужные функции/процедуры для NS 1.1 ищите
Эта ссылка скрыта от группы "Гость" (группа пользователей, которые еще не прошли регистрацию или авторизацию на Проекте). Чтобы увидеть эту ссылку Вам требуется авторизоваться или пройти регистрацию на Проекте (зарегистрироваться).
, а для garrysmod
Эта ссылка скрыта от группы "Гость" (группа пользователей, которые еще не прошли регистрацию или авторизацию на Проекте). Чтобы увидеть эту ссылку Вам требуется авторизоваться или пройти регистрацию на Проекте (зарегистрироваться).
 
Вам нужны чат команды или функции ? А под профессиями Вы имеете в виду фракции?
Все чат команды содержатся в файлах sh_commands.lua, как в самом nutscript, так и в Вашем shema.
Код:
plywhitelist <string name> <string faction> - если честно, я не знаю, что она делает, кажется, это команда даёт возможность игроку создать персонажа с заданной фракцией.
plyunwhitelist  <string name> <string faction> - обратное действие вышеуказанной команды
beclass <string class> - команда для того чтобы получить "ранг", войти в класс:crazy:(простите меня за мой русский)
plytransfer <string name> <string faction> - я думаю из постов выше, что вы теперь знаете, что делает эта команда
Вроде бы это всё, что есть. Не густо, поэтому много надо будет писать самому.
Нужные функции/процедуры для NS 1.1 ищите
Эта ссылка скрыта от группы "Гость" (группа пользователей, которые еще не прошли регистрацию или авторизацию на Проекте). Чтобы увидеть эту ссылку Вам требуется авторизоваться или пройти регистрацию на Проекте (зарегистрироваться).
, а для garrysmod
Эта ссылка скрыта от группы "Гость" (группа пользователей, которые еще не прошли регистрацию или авторизацию на Проекте). Чтобы увидеть эту ссылку Вам требуется авторизоваться или пройти регистрацию на Проекте (зарегистрироваться).
Да я говорил про фракции. Просто недавно перешел с Дарк РП на это, вот и называю до сих пор :З А за ссылки большое спасибо и за помощь в принципе
 
Ранги создаются в папке gamemodes\nutscript\schema\classes
Код:
CLASS.name = "Разведчик" -- Название ранга

CLASS.faction = FACTION_STALKER -- Идентификатор фракции
CLASS.isDefault = true -- Доступна ли по-стандарту
CLASS.loadout = {} -- Выдаваемые оружия
CLASS.business = {} -- Доступные к покупке предметы

function CLASS:OnSet(client) -- Хук, вызываемый при вступлении
end
function CLASS:onCanBe(client) -- Проверка на возможность вступления
end
function CLASS:onLeave(client) -- Проверка на возможность выхода
end

CLASS_SCOUT = CLASS.index -- Уникальный идентификатор ранга

Новый вопрос по фракциям: Как отключить им меню покупок, или как убрать вещи у них из продажи?
 
Я делал так
Код:
CLASS.loadout = {} -- Выдаваемые оружия
CLASS.business = {} -- Доступные к покупке предметы
Т.е. они ничего не может покупать. А меню покупок встроено в сам мод.
 
Я делал так
Код:
CLASS.loadout = {} -- Выдаваемые оружия
CLASS.business = {} -- Доступные к покупке предметы
Т.е. они ничего не может покупать. А меню покупок встроено в сам мод.
А засунутым в нужное место LocalPlayer():getClass() разве нельзя ли убрать это меню ? :rofl: Сейчас у меня нет локального сервера, чтобы это проверить, да и всего 200 мб интернета осталось...
 
Ранги создаются в папке gamemodes\nutscript\schema\classes
Код:
CLASS.name = "Разведчик" -- Название ранга

CLASS.faction = FACTION_STALKER -- Идентификатор фракции
CLASS.isDefault = true -- Доступна ли по-стандарту
CLASS.loadout = {} -- Выдаваемые оружия
CLASS.business = {} -- Доступные к покупке предметы

function CLASS:OnSet(client) -- Хук, вызываемый при вступлении
end
function CLASS:onCanBe(client) -- Проверка на возможность вступления
end
function CLASS:onLeave(client) -- Проверка на возможность выхода
end

CLASS_SCOUT = CLASS.index -- Уникальный идентификатор ранга
А какая команда что бы выдать игроку-ранг?
 
Статус
В этой теме нельзя размещать новые ответы.
Главная Регистрация
Назад
Сверху