DarkRP:CustomJobFields:ru

From Official DarkRP Wiki
Jump to: navigation, search
This page is available in the following languages:
Данная версия страницы доступна на следующих языках:
Jarvis-flag 8010.png English | Russia-flag.png Русский | France-flag.png Français

Создание профессий

Вы можете создавать собственные профессии, и эта страница посвящена разбору всех тонкостей их создания.

Пример со всеми возможными полями

Вот пример с использованием всех возможных полей:

TEAM_Example = DarkRP.createJob("Торговец", {
	color = Color(255, 255, 255, 255),
	model = {
		"models/player/Group03/Female_01.mdl",
		"models/player/Group03/Female_02.mdl"
		},
	description = [[Описание профессии.]],
	weapons = {"weapon_p2282"},
	command = "example",
	max = 3, -- Максимальное количество игроков - 3. Кстати, вы можете указать вещественно число, например 0.7. Это более удобный подход, так как количество свободных мест на данную вакансию станет зависимым от числа онлайн игроков на сервере.
	salary = 45,
	admin = 0,
	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 = "Выбрать это!",
})

Описание полей

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)

Подробнее на этой странице.
Аргументы функции:

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.

Больше дополнительных полей

playerClass (string)

Устанавливает особый player-класс для игрока.

CanPlayerSuicide (function)

Может ли игрок совершить самоубийство, введя команды suicide или kill.
Аргументы:

PlayerCanPickupWeapon (function)

Может ли игрок подбирать оружие или же нет.
Аргументы:

PlayerDeath (function)

Эта функция срабатывает, когда игрок умирает.
Аргументы:

PlayerLoadout (function)

Эта функция срабатывает, когда игрок должен получит оружие для данной профессии. Установите возвращаемое функцией значение на true, если хотите оградить игрока от получения стандартного оружия!
Аргументы:

PlayerSelectSpawn (function)

Эта функция срабатывает, когда выбирается точка спауна для игрока.
Аргументы:

PlayerSetModel (function)

Функция, которая переустанавливает модель игрока, должна возвращать строчку, содержащую путь к модели.
Аргументы:

PlayerSpawn (function)

Эта функция срабатывает, когда пользователь спаунится.
Аргументы:

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.
Аргументы:

ShowSpare2 (function)

Функция срабатывает, когда игрок нажимает клавишу F2.
Аргументы:

OnPlayerChangedTeam (function)

Функция срабатывает, когда игрок сменил профессию с одной на другую.

Аргументы: