Помогите как сделать Vip Профессию и так же как настроить продажу доната например продать драгунов за 250 рублей помогите пж!
Чтобы сделать VIP-профессию тебе нужно в конфигурации профессии добавить такое поле:
-- Начало файла
local vipgroups = {
['VIP'] = true,
['admin'] = true,
['superadmin'] = true,
-- И так далее
}
local meta = FindMetaTable('Player')
function meta:IsVIP()
return vipgroups[self:GetUserGroup()]
end
-- Поле в конфиге профессии
customCheck = function(ply)
return ply:IsVIP(), 'Ты не VIP'
end
Смотри, мне прям все скопировать и вставить в начало скрипта в конфигурациях профессий?
Для людей в “Теме” объяснение имеется.
Но раз не понял то:
В файле с профессиями вставить
local groups = {
['vip'] = true,
['admin'] = true,
['superadmin'] = true,
}
local meta = FindMetaTable('Player')
function meta:IsGroup()--поменял с VIP так как не корректно
return groups[self:GetUserGroup()]
end
В саму профессию вставить так чтобы получилось:
TEAM_CITIZENM = rp.addTeam(' Мега гражданин', {
color = Color(100,200,100),
model = Mcitizens,
weapons = {},
command = 'Mcitizen',
max = 0,
salary = 45,
hasLicense = true,
candemote = false
customCheck = function(ply)
return ply:IsGroup(), 'Нет Прав'
end
})
В общем. У меня на сервере MIlitary RP стоит лучший по моему мнению вайт лист. Ez WhiteList. Однако я хочу что-бы на сервере были донат профессии. Что-бы при попытке изменить профу через вайт лист писало что это донат профа.
Изменение профессий у меня только через ВайтЛист.
cl_ez_jw.lua (13,5 КБ)
sv_ez_jw.lua (2,3 КБ)
sh_ez_jw.lua (275 байтов)
Есть теория что это можно сделать с помощью этих строк кода
customCheck = function(ply)
return CLIENT or table.HasValue({“STEAM:0:1_234561111”}, ply:SteamID())
end,
CustomCheckFailMsg = “This job is donator only!”,
})
Однако я не знаю как и куда их вписывать!
admin = 3?
Что ты вообще подразумеваешь под “Донатная профессия”? По типу випки?
Нет. Профессия - Профессия доступная только отдельным игрокам. Не VIP. Что-то типо профы по STEAM:ID.
Не хочу создавать костыли, ведь нужно выдать одному донат командиру ранг КМД. ВИП будет мешать.
После файлов я указал как сделать это без белого списка.
Белый список просто игнорит эти строки.
что-бы было так при попытке изменить профу через белый список.
Личная профа Попробуй это,тут профессия только по стим айди доступна
Кроме тех, чей стим ID вписан.
Нет, это как-раз для ВИП профессий.
Кстати, вайт лист продолжает игнорировать это всё.
тебе надо немного поковыряться в коде. Сначала создай список донат-проф, типо так:
ez_jw.DonateJobs = {
[TEAM_SOME_DONATE_JOB] = true,
[TEAM_ANOTHER_DONATE_JOB] = true,
-- и так далее...
}
Теперь давай добавим чекер прямо в ту функцию, которая отвечает за смену профы. Это net.Receive("EZ_JW.ChangeTeam", ...)
. Вот как это делается:
net.Receive("EZ_JW.ChangeTeam", function(len, ply)
if table.HasValue(ez_jw.Ranks, ply:GetUserGroup()) or table.HasValue(ez_jw.AllowedSteamID, ply:SteamID()) then
local p = net.ReadEntity()
local t = net.ReadFloat()
local name = net.ReadString()
if IsValid(p) then
-- Чекаем, не донат ли это
if ez_jw.DonateJobs[t] then
DarkRP.notify(ply, 1, 5, "Эта профа только для крутых донатеров.")
return
end
-- Если всё ок, то можно менять профу
p:SetPData("EZ_JW.Team", t)
setRPName(ply, p, name)
p.ez_jw_canchangejob = true
p:changeTeam(t, true)
end
end
end)
Таким образом, если игрок пытается взять донат-профу, ему прилетает сообщение.
Теперь сделаем проверку на VIP-статус или выше, чтобы понять, донатер ли чел. В той же функции net.Receive("EZ_JW.ChangeTeam", ...)
добавим новый код для проверки. Представим, что у тебя есть список для этого:
ez_jw.DonateRanks = {
["vip"] = true,
["super_vip"] = true,
-- и так далее...
}
Теперь добавляем эту проверку в функцию:
net.Receive("EZ_JW.ChangeTeam", function(len, ply)
if table.HasValue(ez_jw.Ranks, ply:GetUserGroup()) or table.HasValue(ez_jw.AllowedSteamID, ply:SteamID()) then
local p = net.ReadEntity()
local t = net.ReadFloat()
local name = net.ReadString()
if IsValid(p) then
local canChange = true -- переменная, которая будет говорить, можно ли менять профу
-- Чекаем, не донат ли это
if ez_jw.DonateJobs[t] then
-- Теперь смотрим, донатер ли чел
if not ez_jw.DonateRanks[ply:GetUserGroup()] then
DarkRP.notify(ply, 1, 5, "Эта профа только для крутых донатеров.")
canChange = false -- если не донатер, то менять профу нельзя
end
end
if canChange then -- если можно менять профу, то делаем это
p:SetPData("EZ_JW.Team", t)
setRPName(ply, p, name)
p.ez_jw_canchangejob = true
p:changeTeam(t, true)
end
end
end
end)
Вот и всё, дальше под себя изменяй.
Спасибо большое! Но можно ли сделать что-бы это была профессия не по рангу(например вип), а по steam:id. То-есть чтобы сменить эту профу могли не випы, а указанные игроки.
ez_jw.DonateSteamIDs = {
["STEAM_0:1:12345678"] = true,
["STEAM_0:0:87654321"] = true,
-- и так далее...
}
net.Receive("EZ_JW.ChangeTeam", function(len, ply)
if table.HasValue(ez_jw.Ranks, ply:GetUserGroup()) or table.HasValue(ez_jw.AllowedSteamID, ply:SteamID()) then
local p = net.ReadEntity()
local t = net.ReadFloat()
local name = net.ReadString()
if IsValid(p) then
local canChange = true -- переменная, которая будет говорить, можно ли менять профу
-- Чекаем, не донат ли это
if ez_jw.DonateJobs[t] then
-- Теперь смотрим, есть ли SteamID в массиве
if not ez_jw.DonateSteamIDs[ply:SteamID()] then
DarkRP.notify(ply, 1, 5, "Эта профа только для избранных, бро.")
canChange = false -- если SteamID не в списке, то менять профу нельзя
end
end
if canChange then -- если можно менять профу, то делаем это
p:SetPData("EZ_JW.Team", t)
setRPName(ply, p, name)
p.ez_jw_canchangejob = true
p:changeTeam(t, true)
end
end
end
end)