Difference between revisions of "DarkRP:CustomJobFields:ru"

From Official DarkRP Wiki
Jump to navigation Jump to search
m
m (Fixed grammar)
Line 1: Line 1:
 
{{TOC right}}{{Languages|en=DarkRP:CustomJobFields|ru=DarkRP:CustomJobFields:ru}}
 
{{TOC right}}{{Languages|en=DarkRP:CustomJobFields|ru=DarkRP:CustomJobFields:ru}}
  
= '''Создание профессий''' =
+
= Создание профессий =
Вы можете создавать свои профессии. Это страница посвящена созданию работ для DarkRP
+
Вы можете создавать собственные профессии, и эта страница посвящена разбору всех тонкостей их создания.
  
 
== Пример со всеми возможными полями ==
 
== Пример со всеми возможными полями ==
 
Вот пример с использованием всех возможных полей:
 
Вот пример с использованием всех возможных полей:
{{Code|1=TEAM_Example = DarkRP.createJob("Пример", {
+
{{Code|1=TEAM_Example = DarkRP.createJob("Торговец", {
 
color = Color(255, 255, 255, 255),
 
color = Color(255, 255, 255, 255),
 
model = {
 
model = {
Line 15: Line 15:
 
weapons = {"weapon_p2282"},
 
weapons = {"weapon_p2282"},
 
command = "example",
 
command = "example",
max = 3, -- Вы также можете указать здесь десятичное число, например 0.7. В таком случае, 70% игроков сервера, смогут играть за эту профессию
+
max = 3, -- Максимальное количество игроков - 3. Кстати, вы можете указать вещественно число, например 0.7. Это более удобный подход, так как количество свободных мест на данную вакансию станет зависимым от числа онлайн игроков на сервере.
 
salary = 45,
 
salary = 45,
 
admin = 0,
 
admin = 0,
 
vote = false,
 
vote = false,
 
hasLicense = false,
 
hasLicense = false,
 +
 +
-- Необязательные поля
 
NeedToChangeFrom = TEAM_CITIZEN,
 
NeedToChangeFrom = TEAM_CITIZEN,
 
customCheck = function(ply) return ply:getDarkRPVar("money") > 10000 end,
 
customCheck = function(ply) return ply:getDarkRPVar("money") > 10000 end,
Line 27: Line 29:
 
maps = {"rp_downtown_v2", "gm_construct"},
 
maps = {"rp_downtown_v2", "gm_construct"},
 
         candemote = false,
 
         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,
 
CanPlayerSuicide = function(ply) return false end,
 
PlayerCanPickupWeapon = function(ply, weapon) return true end,
 
PlayerCanPickupWeapon = function(ply, weapon) return true end,
Line 38: Line 51:
 
         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, -- Люди делают голосование, когда нет администраторов
 
         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,
 
ShowSpare1 = function(ply) end,
ShowSpare2 = 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 = "Выбрать это!",
 
})
 
})
 
}}
 
}}
Line 45: Line 63:
 
'''color'''
 
'''color'''
 
<div style="margin-left: 16px; margin-bottom: 8px;">
 
<div style="margin-left: 16px; margin-bottom: 8px;">
Цвет ника игрока в чате. (Если он выбрал текущую профессию)
+
Цвет никнейма/имени игрока в чате.
 
</div>
 
</div>
  
 
'''model'''
 
'''model'''
 
<div style="margin-left: 16px; margin-bottom: 8px;">
 
<div style="margin-left: 16px; margin-bottom: 8px;">
Модель для профессии. Модель может быть одна или моделей может быть несколько. Вот 2 примера:<br />
+
Модель для профессии, можно установить одну единственную, а можно несколько на выбор игрока; вот примеры:<br />
 
Как вы видите, у этой профессии будет одна моделька.
 
Как вы видите, у этой профессии будет одна моделька.
 
{{Code|1=model = "models/player/Group03/Female_01.mdl"}}
 
{{Code|1=model = "models/player/Group03/Female_01.mdl"}}
  
А если устроиться на эту работу, то вам будет предложен выбор модели для текущей работы.
+
А здесь вам будет предложен выбор модели.
 
{{Code|1=model = {
 
{{Code|1=model = {
 
"models/player/Group03/Female_01.mdl",
 
"models/player/Group03/Female_01.mdl",
Line 63: Line 81:
 
'''description'''
 
'''description'''
 
<div style="margin-left: 16px; margin-bottom: 8px;">
 
<div style="margin-left: 16px; margin-bottom: 8px;">
Описание будет показываться при выборе профессии в меню. Для открытия меню, нажмите F4.
+
Описание профессии отображается в меню, которое по умолчанию можно открыть на F4.
 
</div>
 
</div>
  
 
'''weapons'''
 
'''weapons'''
 
<div style="margin-left: 16px; margin-bottom: 8px;">
 
<div style="margin-left: 16px; margin-bottom: 8px;">
Список оружия, при выборе профессии сразу появляется оружие указанное в этих полях.
+
Всё, что указанно в этом поле(в скобках), игрок получает при выборе профессии.
 
К примеру:
 
К примеру:
 
{{Code|1=weapons = {"arrest_stick", "unarrest_stick", "weapon_deagle2", "stunstick", "door_ram", "weaponchecker"}}}
 
{{Code|1=weapons = {"arrest_stick", "unarrest_stick", "weapon_deagle2", "stunstick", "door_ram", "weaponchecker"}}}
Line 75: Line 93:
 
'''command'''
 
'''command'''
 
<div style="margin-left: 16px; margin-bottom: 8px;">
 
<div style="margin-left: 16px; margin-bottom: 8px;">
В этом поле указывается текст, в дальнейшем текст преобразуется в команду для чата.<br />
+
Чат-команда для быстрого выбора профессии.<br />
К примеру: напишите /example в чат чтобы устроиться на какую-то работу.
+
Пример: напишите /example в чат.
 
{{Code|1=command = "example"}}
 
{{Code|1=command = "example"}}
  
'''Note''': Если для работы включено голосование игроков, то команду нужно вводить с префиксом /vote, вот так "/voteexmaple".
+
'''Заметка''': Ежели поле vote установлено на true(требуется голосование), то команду нужно вводить с префиксом "/vote", то есть: "/voteexmaple".
 
</div>
 
</div>
  
 
'''max'''
 
'''max'''
 
<div style="margin-left: 16px; margin-bottom: 8px;">
 
<div style="margin-left: 16px; margin-bottom: 8px;">
Максимальное число игроков, которое может устроится на данную работу.
+
Максимальное количество игроков, которые могут выбрать данную профессию.</br>
 +
Можно указать вещественное число, например: 0.3, что означает - 30% от всех игроков.
 
</div>
 
</div>
  
Line 94: Line 113:
 
'''admin'''
 
'''admin'''
 
<div style="margin-left: 16px; margin-bottom: 8px;">
 
<div style="margin-left: 16px; margin-bottom: 8px;">
Только админы могут устроиться на эту работу?
+
Кто может выбрать данную профессию.
 
{{Code|1=
 
{{Code|1=
 
admin = 0 -- любой игрок
 
admin = 0 -- любой игрок
Line 101: Line 120:
 
}}
 
}}
  
Вы также можете настроить доступ для этой работы к примеру V.I.P пользователям, чтобы посмотреть как это сделать, прокрутите до описание поля '''customCheck'''.
+
Вы также можете настроить доступ к профессии определённой группе игроков(donator, vip и д.р.). Чтобы узнать как это сделать и увидеть пример, прокрутите страницу до описания поля '''customCheck'''.
 
</div>
 
</div>
  
 
'''vote'''
 
'''vote'''
 
<div style="margin-left: 16px; margin-bottom: 8px;">
 
<div style="margin-left: 16px; margin-bottom: 8px;">
Включить голосование чтобы получить работу? true - да, false - нет.
+
Требуется ли голосование для получения работы.</br>
 +
true - да, false - нет.
 
</div>
 
</div>
  
 
'''hasLicense'''
 
'''hasLicense'''
 
<div style="margin-left: 16px; margin-bottom: 8px;">
 
<div style="margin-left: 16px; margin-bottom: 8px;">
Нужна ли лицензия на оружие? true - да, false - нет.
+
Выдаётся ли лицензия на оружие по умолчанию.</br>
Лучше установить как true, так будет проще полиции.
+
true - да, false - нет.
 
</div>
 
</div>
  
 
'''NeedToChangeFrom'''
 
'''NeedToChangeFrom'''
 
<div style="margin-left: 16px; margin-bottom: 8px;">
 
<div style="margin-left: 16px; margin-bottom: 8px;">
Вы можете стать Шефом полиции, если вы сейчас работаете Полицейским.Пример: Вы можете стать Шефом полиции, потому что вы работаете Полицейским:
+
Требуется ли устроиться на одну профессию, для получения другой.</br>Пример: вы можете стать шефом полиции, если вы работаете полицейским:
 
{{Code|1=NeedToChangeFrom = TEAM_POLICE}}
 
{{Code|1=NeedToChangeFrom = TEAM_POLICE}}
  
Пример 2: Вы можете стать Мэром, потому что вы работаете Шефом полиции/Полицейским
+
Пример: Вы можете стать мэром, если вы работаете шефом полиции/полицейским
 
{{Code|1=NeedToChangeFrom = {TEAM_CHIEF, TEAM_POLICE} }}
 
{{Code|1=NeedToChangeFrom = {TEAM_CHIEF, TEAM_POLICE} }}
 
</div>
 
</div>
Line 126: Line 146:
 
'''customCheck'''
 
'''customCheck'''
 
<div style="margin-left: 16px; margin-bottom: 8px;">
 
<div style="margin-left: 16px; margin-bottom: 8px;">
Подробнее на этой странице http://wiki.darkrp.com/index.php/DarkRP-Config:ru
+
Подробнее на этой странице http://wiki.darkrp.com/index.php/DarkRP-Config
 
</div>
 
</div>
  
 
'''CustomCheckFailMsg'''
 
'''CustomCheckFailMsg'''
 
<div style="margin-left: 16px; margin-bottom: 8px;">
 
<div style="margin-left: 16px; margin-bottom: 8px;">
Сообщение для того кто хочет, но не может устроиться на работу. Допустим такой случай. Чтобы устроиться на работу вам нужно 10000, а у вас всего 1000, в таком случае вам будет показано написаное в этом поле сообщение.<br />
+
Сообщение, которое увидит игрок, если условие, указанное в customCheck, является ложным, неистинным(возвращает false).</br>
Подробнее смотрите тут http://wiki.darkrp.com/index.php/Donator_Job_configuration#.D0.A1.D0.BF.D0.B5.D1.86.D0.B8.D0.B0.D0.BB.D1.8C.D0.BD.D1.8B.D0.B5_.D1.81.D0.BE.D0.BE.D0.B1.D1.89.D0.B5.D0.BD.D0.B8.D1.8F
+
Пример, который можно найти в коде выше, работает следующим образом: он осуществляет проверку кошелька игрока и если там есть сумма больше 10000, то вы сможете выбрать эту профессии, в ином случае, выводится сообщение, указанное в этом поле.
 
</div>
 
</div>
  
 
'''modelScale'''
 
'''modelScale'''
 
<div style="margin-left: 16px; margin-bottom: 8px;">
 
<div style="margin-left: 16px; margin-bottom: 8px;">
Масштаб модели
+
Масштаб модели игрока.
{{Code|1=modelScale = 1 -- По молчанию
+
{{Code|1=modelScale = 1 -- 100% - по молчанию  
 
modelScale = 1.2 -- 120%
 
modelScale = 1.2 -- 120%
 
modelScale = 0.9 -- 90%.
 
modelScale = 0.9 -- 90%.
 
}}
 
}}
  
'''Лучше не трогайте данное поле, из-за него игроки не смогут нормально прыгать, приседать, ходить и т.д.'''
+
'''Рекомендуем сильно не изменять данное значение, так как это может привести к тому, что игроки не смогут нормально прыгать и приседать.'''
 
</div>
 
</div>
  
 
'''maxpocket'''
 
'''maxpocket'''
 
<div style="margin-left: 16px; margin-bottom: 8px;">
 
<div style="margin-left: 16px; margin-bottom: 8px;">
Количество предметов которые может поместить в карман игрок с данной профессией. Если это поле не установлено, то будет использоваться стандартное значение из config.lua, равное 10.
+
Количество предметов, которые может поместить в карман игрок, имея данную профессию. Если это поле не установлено, то будет использоваться стандартное значение из config.lua, значение которого равно 10.
 
</div>
 
</div>
  
 
'''maps'''
 
'''maps'''
 
<div style="margin-left: 16px; margin-bottom: 8px;">
 
<div style="margin-left: 16px; margin-bottom: 8px;">
Это поле отвечает за работу профессии на определённых картах.
+
Это поле отвечает за отображение профессии в списке доступных на определённых картах.
 
</div>
 
</div>
  
 
'''candemote'''
 
'''candemote'''
 
<div style="margin-left: 16px; margin-bottom: 8px;">
 
<div style="margin-left: 16px; margin-bottom: 8px;">
Это опция отвечает за понижение в должности игрока с этой профессией, могут ли его понизить или же нет. true - не могут, false - могут
+
Отвечает за возможность понижения игрока, который выбрал данную профессию, в должности до гражданина.</br>
 +
true - могут, false - не могут
 
</div>
 
</div>
  
 
== Более продвинутые поля ==
 
== Более продвинутые поля ==
Эти поля работают только с функциями.
 
Если вы хотите отредактировать DakRP (''особенно файл gamemode_functions.lua''), то лучше сделайте бэкап файла. Старайтесь избегать редактирование файлов DarkRP.
 
 
 
'''CanPlayerSuicide'''
 
'''CanPlayerSuicide'''
 
<div style="margin-left: 16px; margin-bottom: 8px;">
 
<div style="margin-left: 16px; margin-bottom: 8px;">
Line 244: Line 262:
 
Аргументы: Player ply
 
Аргументы: Player ply
 
</div>
 
</div>
 
== Перевод мануала ==
 
 
 
http://steamcommunity.com/id/art_gur/ - Перевёл на '''русский язык'''.
 

Revision as of 16:30, 4 February 2017

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