DarkRP:CustomJobFields:ru

From Official DarkRP Wiki
Revision as of 08:07, 5 February 2017 by Temstvo777 (talk | contribs) (Add RewriteRequired)
Jump to navigation Jump to search
This page is available in the following languages:
Данная версия страницы доступна на следующих языках:
Jarvis-flag 8010.png English | Russia-flag.png Русский


Минуточку внимания, пожалуйста!

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

Мы рекомендуем вам обратиться к английской версии данной страницы, во избежание возможных неурядиц.

В скором времени страницы, помеченные такой табличкой, будут переписаны, либо дополнены.

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

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

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

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

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

Цвет никнейма/имени игрока в чате.

model

Модель для профессии, можно установить одну единственную, а можно несколько на выбор игрока; вот примеры:
Как вы видите, у этой профессии будет одна моделька.

model = "models/player/Group03/Female_01.mdl"

А здесь вам будет предложен выбор модели.

model = {
		"models/player/Group03/Female_01.mdl",
		"models/player/Group03/Female_02.mdl"
		}

description

Описание профессии отображается в меню, которое по умолчанию можно открыть на F4.

weapons

Всё, что указанно в этом поле(в скобках), игрок получает при выборе профессии. К примеру:

weapons = {"arrest_stick", "unarrest_stick", "weapon_deagle2", "stunstick", "door_ram", "weaponchecker"
}

command

Чат-команда для быстрого выбора профессии.
Пример: напишите /example в чат.

command = "example"

Заметка: Ежели поле vote установлено на true(требуется голосование), то команду нужно вводить с префиксом "/vote", то есть: "/voteexmaple".

max

Максимальное количество игроков, которые могут выбрать данную профессию.
Можно указать вещественное число, например: 0.3, что означает - 30% от всех игроков.

salary

Заработная плата.

admin

Кто может выбрать данную профессию.

admin = 0 -- любой игрок
admin = 1 -- только админы
admin = 2 -- только супер админы

Вы также можете настроить доступ к профессии определённой группе игроков(donator, vip и д.р.). Чтобы узнать как это сделать и увидеть пример, прокрутите страницу до описания поля customCheck.

vote

Требуется ли голосование для получения работы.
true - да, false - нет.

hasLicense

Выдаётся ли лицензия на оружие по умолчанию.
true - да, false - нет.

NeedToChangeFrom

Требуется ли устроиться на одну профессию, для получения другой.
Пример: вы можете стать шефом полиции, если вы работаете полицейским:

NeedToChangeFrom = TEAM_POLICE

Пример: Вы можете стать мэром, если вы работаете шефом полиции/полицейским

NeedToChangeFrom = {TEAM_CHIEF, TEAM_POLICE}

customCheck

Подробнее на этой странице http://wiki.darkrp.com/index.php/DarkRP-Config

CustomCheckFailMsg

Сообщение, которое увидит игрок, если условие, указанное в customCheck, является ложным, неистинным(возвращает false).
Пример, который можно найти в коде выше, работает следующим образом: он осуществляет проверку кошелька игрока и если там есть сумма больше 10000, то вы сможете выбрать эту профессии, в ином случае, выводится сообщение, указанное в этом поле.

modelScale

Масштаб модели игрока.

modelScale = 1 -- 100% - по молчанию 
modelScale = 1.2 -- 120%
modelScale = 0.9 -- 90%.

Рекомендуем сильно не изменять данное значение, так как это может привести к тому, что игроки не смогут нормально прыгать и приседать.

maxpocket

Количество предметов, которые может поместить в карман игрок, имея данную профессию. Если это поле не установлено, то будет использоваться стандартное значение из config.lua, значение которого равно 10.

maps

Это поле отвечает за отображение профессии в списке доступных на определённых картах.

candemote

Отвечает за возможность понижения игрока, который выбрал данную профессию, в должности до гражданина.
true - могут, false - не могут

Более продвинутые поля

CanPlayerSuicide

Эта функция решает, что будет с игроком смерти на этой работе.
Аргументы: Player ply

PlayerCanPickupWeapon

Эта функция решает, какое оружие может подобрать игрок с этой профессией.
Аргументы: Player ply, Entity weapon

PlayerDeath

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

PlayerLoadout

Эта функция срабатывает, когда игрок получает своё оружие. Return true to prevent him from getting his default weapons!
Аргументы: Player ply

PlayerSelectSpawn

Эта функция срабатывает, если у игрока есть своя точка Спауна.
Аргументы: Player ply, Entity spawn

PlayerSetModel

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

PlayerSpawn

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

PlayerSpawnProp

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

RequiresVote

Функция отвечает вот за что, Должен ли игрок делать голосование, чтобы устроиться на работу. Внимание: если установлено это поле, то поле vote не срабатывает. (Точнее не имеет смысла использовать поле vote)
Аргументы: Player ply
Номер группы. (Не используйте название команды TEAM_НАЗВАНИЕ ПРОФЕСИИ, так как это работать не будет!)
Пример:

ОписаниеПоявляется голосование, если людей с такой профессией более 3, но голосование исчезает если людей с такой профессией меньше 3.
Код Lua
RequiresVote = function(ply, job) return #team.GetPlayers(job) >= 3 end

Другой пример:

ОписаниеВ этом коде, только V.I.P игроки, могут устроиться на работу без голосования.
Код Lua
RequiresVote = function(ply, job) return ply:GetNWString("usergroup") ~= "vip" end


ShowSpare1

Вызывается, когда игрок нажимает F1
Аргументы: Player ply

ShowSpare2

Вызывается, когда игрок нажимает F2
Аргументы: Player ply