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

Как создать фракцию в режиме NS

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

Klevtsov

Пользователь
Регистрация
7 Июн 2016
Сообщения
4
Реакции
0
Баллы
13
Возраст
123
Пол
Прошу распишите подробно как создать фракцию в режиме nutscript. Буду благодарен!!
 

Neon

Создатель
Команда форума
Проверенный
Регистрация
9 Фев 2013
Сообщения
1,394
Реакции
3
Баллы
49
Для создания новой фракции необходимо создать новый файл в папке 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
 

Klevtsov

Пользователь
Регистрация
7 Июн 2016
Сообщения
4
Реакции
0
Баллы
13
Возраст
123
Пол
Спасибо!
 

Vergjil

Пользователь
Регистрация
29 Авг 2014
Сообщения
40
Реакции
0
Баллы
15
Возраст
36
Пол
Для создания новой фракции необходимо создать новый файл в папке 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

А как же тогда назначать на фракцию игроков и самому перейти на эту профу, если она не для всех?
 

Neon

Создатель
Команда форума
Проверенный
Регистрация
9 Фев 2013
Сообщения
1,394
Реакции
3
Баллы
49
Если не для всех, то можно использовать стандартную для NS 1.1 команду /plytransfer
 

Neon

Создатель
Команда форума
Проверенный
Регистрация
9 Фев 2013
Сообщения
1,394
Реакции
3
Баллы
49
Ранги создаются в папке 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 -- Уникальный идентификатор ранга
 

Vergjil

Пользователь
Регистрация
29 Авг 2014
Сообщения
40
Реакции
0
Баллы
15
Возраст
36
Пол
Ранги создаются в папке 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 -- Уникальный идентификатор ранга
Профессия сделана, назначил себя при помощи команды, но скин остался как у гражданского. Вопрос: Что делать?
 

Ледкол

Пользователь
Регистрация
5 Ноя 2015
Сообщения
108
Реакции
0
Баллы
29
Возраст
23
Пол
Профессия сделана, назначил себя при помощи команды, но скин остался как у гражданского. Вопрос: Что делать?
Команда /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 строчками, тем более наши файлы не совпадают. А вдруг я напишу что-то, а человеку это может быть не нужно.
 

Vergjil

Пользователь
Регистрация
29 Авг 2014
Сообщения
40
Реакции
0
Баллы
15
Возраст
36
Пол
Команда /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 строчками, тем более наши файлы не совпадают. А вдруг я напишу что-то, а человеку это может быть не нужно.


Благодарю покорно. Но теперь еще просьба: Можете ли вы написать команды связанные с профессиями? В интернете к сожалению ничего путного не нагуглил
 

Ледкол

Пользователь
Регистрация
5 Ноя 2015
Сообщения
108
Реакции
0
Баллы
29
Возраст
23
Пол
Вам нужны чат команды или функции ? А под профессиями Вы имеете в виду фракции?
Все чат команды содержатся в файлах 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 здесь
 

Vergjil

Пользователь
Регистрация
29 Авг 2014
Сообщения
40
Реакции
0
Баллы
15
Возраст
36
Пол
Вам нужны чат команды или функции ? А под профессиями Вы имеете в виду фракции?
Все чат команды содержатся в файлах 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 здесь
Да я говорил про фракции. Просто недавно перешел с Дарк РП на это, вот и называю до сих пор :З А за ссылки большое спасибо и за помощь в принципе
 

Vergjil

Пользователь
Регистрация
29 Авг 2014
Сообщения
40
Реакции
0
Баллы
15
Возраст
36
Пол
Ранги создаются в папке 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 -- Уникальный идентификатор ранга

Новый вопрос по фракциям: Как отключить им меню покупок, или как убрать вещи у них из продажи?
 

Neon

Создатель
Команда форума
Проверенный
Регистрация
9 Фев 2013
Сообщения
1,394
Реакции
3
Баллы
49
Я делал так
Код:
CLASS.loadout = {} -- Выдаваемые оружия
CLASS.business = {} -- Доступные к покупке предметы
Т.е. они ничего не может покупать. А меню покупок встроено в сам мод.
 

Ледкол

Пользователь
Регистрация
5 Ноя 2015
Сообщения
108
Реакции
0
Баллы
29
Возраст
23
Пол
Я делал так
Код:
CLASS.loadout = {} -- Выдаваемые оружия
CLASS.business = {} -- Доступные к покупке предметы
Т.е. они ничего не может покупать. А меню покупок встроено в сам мод.
А засунутым в нужное место LocalPlayer():getClass() разве нельзя ли убрать это меню ? :rofl: Сейчас у меня нет локального сервера, чтобы это проверить, да и всего 200 мб интернета осталось...
 

Neon

Создатель
Команда форума
Проверенный
Регистрация
9 Фев 2013
Сообщения
1,394
Реакции
3
Баллы
49
Я не заморачивался по поводу меню, оно меня не напрягало.
 

Sex Gamaz

Пользователь
Регистрация
17 Авг 2016
Сообщения
40
Реакции
0
Баллы
18
Возраст
29
Пол

☢stalker39☢

Пользователь
Регистрация
28 Июл 2017
Сообщения
280
Реакции
0
Баллы
30
Адрес
S.T.A.L.K.E.R. RP
Веб-сайт
netzona.org
Клан-тег
LEGION
Род занятий
Форумный червь
Ранги создаются в папке 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 -- Уникальный идентификатор ранга
А какая команда что бы выдать игроку-ранг?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху Снизу