DarkRP:CustomJobFields:ru
Создание профессий[edit]
Вы можете создавать собственные профессии, и эта страница посвящена разбору всех тонкостей их создания.
Пример со всеми возможными полями[edit]
Вот пример с использованием всех возможных полей:
TEAM_Example = DarkRP.createJob("Торговец", {
color = Color(255, 255, 255, 255),
model = {
"models/models/player/bandit/bandit2.mdl",
"models/models/player/bandit/bandit5.mdl"
},
description = [[]],
weapons = {"weapon_GP37"}
command = "Одиночки",
max = 9999, -- Максимальное количество игроков - 30. Кстати, вы можете указать вещественно число, например 0.7. Это более удобный подход, так как количество свободных мест на данную вакансию станет зависимым от числа онлайн игроков на сервере.
salary = 45,
admin = 3,
vote = false,
hasLicense = false,
-- Необязательные поля
NeedToChangeFrom = TEAM_CITIZEN,
customCheck = function(ply) return ply:getDarkRPVar("money") > 10000 end,
CustomCheckFailMsg = "У вас не достаточно денежных средств!",
modelScale = 1.2,
maxpocket = 20,
maps = {"rp_downtown_v2", "gm_construct"},
candemote = false,
mayor = false,
chief = false,
medic = false,
cook = false,
hobo = false,
ammo = {
["pistol"] = 60,
},
category = "Other",
sortOrder = 100,
playerClass = "player_darkrp",
CanPlayerSuicide = function(ply) return false end,
PlayerCanPickupWeapon = function(ply, weapon) return true end,
PlayerDeath = function(ply, weapon, killer) end,
PlayerLoadout = function(ply) return true end,
PlayerSelectSpawn = function(ply, spawn) end,
PlayerSetModel = function(ply) return "models/player/Group03/Female_02.mdl" end,
PlayerSpawn = function(ply) end,
PlayerSpawnProp = function(ply, model) end,
RequiresVote = function(ply, job) for k,v in pairs(player.GetAll()) do if IsValid(v) and v:IsAdmin() then return false end end return true end, -- Люди делают голосование, когда нет администраторов
ShowSpare1 = function(ply) end,
ShowSpare2 = function(ply) end,
OnPlayerChangedTeam = function(ply, oldTeam, newTeam) end,
canStartVote = function(ply) return ply:Distance(SomeNPC) < 200 end,
canStartVoteReason = "You must be close to some NPC",
buttonColor = Color(255, 255, 255, 255),
label = "Выбрать это!",
})
Описание полей[edit]
color (Color) (required)
Цвет никнейма/имени игрока в чате.
model (string/table) (required)
Модель для профессии, можно установить одну единственную, а можно несколько на выбор игрока; вот примеры:
Как вы видите, у этой профессии будет одна моделька.
model = "models/player/Group03/Female_01.mdl"
А здесь вам будет предложен выбор модели.
model = {
"models/player/Group03/Female_01.mdl",
"models/player/Group03/Female_02.mdl"
}
description (string) (required)
Описание профессии отображается в меню, которое по умолчанию можно открыть на F4.
weapons (table) (required)
Всё, что указанно в этом поле(в скобках), игрок получает при выборе профессии. К примеру:
weapons = {"arrest_stick", "unarrest_stick", "weapon_deagle2", "stunstick", "door_ram", "weaponchecker"
command (string) (required)
Чат-команда для быстрого выбора профессии.
Пример: напишите /example в чат.
command = "example"
Заметка: Ежели поле vote установлено на true(требуется голосование), то команду нужно вводить с префиксом "/vote", то есть: "/voteexmaple".
max (number) (required)
Максимальное количество игроков, которые могут выбрать данную профессию.
Можно указать вещественное число, например: 0.3, что означает - 30% от всех игроков.
salary (number) (required)
Заработная плата, которую игрок будет получать через определённое время.
admin (number)
Устанавливает группу игроков, которым доступна данная профессия.
admin = 0 -- любой игрок
admin = 1 -- только администраторы
admin = 2 -- только супер-администраторы
Вы также можете настроить доступ к профессии определённой группе игроков(donator, vip и д.р.). Чтобы узнать как это сделать и увидеть пример, прокрутите страницу до описания поля customCheck.
vote (boolean)
Требуется ли голосование для получения работы.
true - да, false - нет.
hasLicense (boolean)
Выдаётся ли лицензия на оружие по умолчанию.
true - да, false - нет.
NeedToChangeFrom (number/table)
Требуется ли устроиться на одну профессию, для получения другой.
Пример: вы можете стать шефом полиции, если вы работаете полицейским:
NeedToChangeFrom = TEAM_POLICE
Пример: Вы можете стать мэром, если вы работаете шефом полиции/полицейским
NeedToChangeFrom = {TEAM_CHIEF, TEAM_POLICE}
customCheck (function)
Подробнее на этой странице.
Аргументы функции:
- Player ply
CustomCheckFailMsg (string/function)
Сообщение, которое увидит игрок, если условие, указанное в customCheck, является ложным, неистинным(возвращает false).
Пример, который можно найти в коде выше, работает следующим образом: он осуществляет проверку кошелька игрока и если там есть сумма больше 10000, то вы сможете выбрать эту профессии, в ином случае, выводится сообщение, указанное в этом поле.
Функция имеет следующие аргументы:
modelScale (number)
Масштаб модели игрока.
modelScale = 1 -- 100% - по умолчанию
modelScale = 1.2 -- 120%
modelScale = 0.9 -- 90%.
Рекомендуем сильно не изменять данное значение, так как это может привести к тому, что игроки не смогут нормально прыгать и приседать.
maxpocket (number)
Количество предметов, которые может поместить в карман игрок, имея данную профессию. Если это поле не установлено, то будет использоваться стандартное значение из config.lua, значение которого равно 10.
maps (table)
Это поле отвечает за отображение(доступность) профессии в списке доступных на определённых картах.
candemote (boolean)
Отвечает за возможность понижения игрока, который выбрал данную профессию, в должности до гражданина.
true - могут, false - не могут
mayor (boolean)
Если истинно, то игроки, имеющие данную профессию, получают те же права(включение комендантского часа, например), что и мэр.
chief (boolean)
Если истинно, то игроки, имеющие данную профессию, получают те же права(выдача лицензий, например), что и шеф полиции.
medic (boolean)
Если истинно, то игроки, имеющие данную профессию, получают те же права, что и медик.
cook (boolean)
Если истинно, то игроки, имеющие данную профессию, получают те же права, что и повар.
hobo (boolean)
Если истинно, то игроки, имеющие данную профессию, получают те же права(отсутствие заработной платы, например), что и бездомный.
ammo (table)
Получают амуницию(патроны).
Индекс в этой этой таблице - название сорта патрон(pistol, например), а числовое значение - количество.
category (string)
Категория, к которой принадлежит профессия.
ЗАМЕТКА: Выдаст ошибку, если установлена несуществующая категория. Руководство по их созданию, можно найти на этой странице.
sortOrder (number)
Позиция профессии в списке. Меньшее значение(например единица), заставит её отображаться в начале списка. По умолчанию, если ничего не установлено, поле имеет значение равное 100.
Больше дополнительных полей[edit]
playerClass (string)
Устанавливает особый player-класс для игрока.
CanPlayerSuicide (function)
Может ли игрок совершить самоубийство, введя команды suicide или kill.
Аргументы:
- Player ply
PlayerCanPickupWeapon (function)
PlayerDeath (function)
PlayerLoadout (function)
Эта функция срабатывает, когда игрок должен получит оружие для данной профессии. Установите возвращаемое функцией значение на true, если хотите оградить игрока от получения стандартного оружия!
Аргументы:
- Player ply
PlayerSelectSpawn (function)
Эта функция срабатывает, когда выбирается точка спауна для игрока.
Аргументы:
PlayerSetModel (function)
Функция, которая переустанавливает модель игрока, должна возвращать строчку, содержащую путь к модели.
Аргументы:
- Player ply
PlayerSpawn (function)
Эта функция срабатывает, когда пользователь спаунится.
Аргументы:
- Player ply
PlayerSpawnProp (function)
RequiresVote (function)
Функция, которая даёт возможность выбора профессии, например, без голосования, при определённом условии.
Внимание: если данная функция определена, то значение из функции vote, даже если имеет значение true, не запустит голосование.
Аргументы:
Пример:
Описание | При выборе профессии запуститься голосование, если количество игроков с данной профессией равно 3-ём или больше трёх. |
---|---|
Код Lua | RequiresVote = function(ply, job) return #team.GetPlayers(job) >= 3 end
|
Пример:
Описание | Если у игрока есть премиум(vip), он сможет выбрать эту профессию необходимости в голосовании за него игроков, для обычных игроков наоборот - возможность играть за данную профессию зависит от результата голосования. |
---|---|
Код Lua | RequiresVote = function(ply, job) return ply:GetNWString("usergroup") ~= "vip" end
|
ShowSpare1 (function)
Функция срабатывает, когда игрок нажимает клавишу F1.
Аргументы:
- Player ply
ShowSpare2 (function)
Функция срабатывает, когда игрок нажимает клавишу F2.
Аргументы:
- Player ply
OnPlayerChangedTeam (function)