Всеп привет! Как сделать штуку которая будет позволять менять скин только badmin привелегии (Root). Например я хочу за професию полицейского себе скин аниме девочки. Как это сделать?
В каком виде?
Пример 1:
--Игрок пишет в чат/консоль
setmodel 'Название модели'
--Игроку ставит модель
Пример 2:
--Игрок пишет в чат/консоль
modelmenu
--после чего открывается список(меню) со всеми моделями из списка(Таблицы)
Ну или поставить Outfitter
Первое 1
В любой sv файл, клиенту это не надо (у клиента её просто не будет в консоли но будет работать)
Как работает
Игрок пишет в чат setmodel ‘Название модели из таблицы’,
после чего у него изменится моделька,
даже после смерти или смены профф она не слетит,
что бы убрать нужно прописать просто setmodel
--setmodel 'Название модели'
--'Имя_Без_Пробелов'- указывает имя для модели( можно на русском)
-- Rank- указываем ранг (какому рангу можно использовать, Если стоит RankLock =true то данную модель смогут использовать только указзаные ранги)
--RankLock данную модель с могут использовать только указанные ранги в Rank
--NotRank указанные ранги не смогут использовать данную модель
--Model - Путь до mld модели
--cmdmodel - Можете поменять на свою команду
--[[
TableModelList={
['Имя_Без_Пробелов']={
Rank= {1},
RankLock=false,
NotRank={},
Model=''
},
['zombie']={
Rank= {2},
RankLock=false,
NotRank={},
Model='models/player/zombie_classic.mdl'
},}
]]
local cmdmodel = 'Setmodel'
local TableModelList = {
['zombie']={
Rank= {2},
RankLock=true,
NotRank={},
Model='models/player/zombie_classic.mdl'
},
}
hook.Add('playerCanRunCommand', 'rp.playerCanRunCommand.canruncmdModel', function(pl,args)
if args == cmdmodel then return true end
end)
ba.ranks.Get(1):SetFlags('u')
local cmd = ba.cmd.Create(cmdmodel, function(pl, args)
local modelTable
local Models
local rankText = ''
if not args.model then
if pl.SetModelTable then
pl.SetModelTable = nil
if string.len(rp.teams[pl:Team()].model[1]) == 1 then
pl:SetModel(rp.teams[pl:Team()].model)
else
pl:SetModel(rp.teams[pl:Team()].model[math.random(1, #rp.teams[pl:Team()].model)])
end
else
ba.notify_err(pl, 'Неуказана модель')
end
--
return
end
for k, v in pairs(TableModelList) do
if args.model ~= k then continue end
modelTable = TableModelList[k]
break
end
--
if not modelTable then
ba.notify_err(pl, 'Модели # не существует!', args[1])
return
end
--
if table.HasValue(modelTable.NotRank, pl:GetRankTable():GetID()) then
ba.notify_err(pl, 'Для вашего ранга модель # запрещена!', args.model)
return
end
if modelTable.RankLock then
Models = table.HasValue(modelTable.Rank, pl:GetRankTable():GetID())
if not Models then
for k, v in ipairs(modelTable.Rank) do
rankText = rankText .. ba.ranks.Get(v):GetName()
if k == #modelTable.Rank then
rankText = rankText .. '.'
else
rankText = rankText .. ', '
end
end
ba.notify_err(pl, 'Модель # разрешена для #', args.model, rankText)
return
end
else
Models = (modelTable.Rank[1] < pl:GetRankTable():GetID())
--
if not Models then
ba.notify_err(pl, 'Вам для модели # требуется ранг # или выше!',args.model, ba.ranks.Get(modelTable.Rank[1]):GetName())
return
end
end
pl:SetModel(modelTable.Model)
pl.SetModelTable = args.model
end):AddParam('string', 'model', 'optional')
local function CheckRankModels(pl, model)
local CheckModels
for k, v in pairs(TableModelList) do
if model ~= k then continue end
modelTable = TableModelList[k]
break
end
if modelTable.RankLock then
CheckModels = table.HasValue(modelTable.Rank, pl:GetRankTable():GetID())
else
CheckModels = (modelTable.Rank[1] < pl:GetRankTable():GetID())
end
timer.Simple(0.01, function()
if not CheckModels then
pl.SetModelTable = nil
else
pl:SetModel(modelTable.Model)
end
end)
end
hook.Add('PlayerSetModel', 'ChangeTeamSetModel', function(pl)
if not pl.SetModelTable then return end
CheckRankModels(pl, pl.SetModelTable)
end)
А куда именно вставлять
в любой файл с припиской sv
ну или самому создать название_sv.lua
Будет так
badmin\lua\ba\plugins\название_sv.lua
–setmodel ‘Название модели’
–‘Имя_Без_Пробелов’- указывает имя для модели( можно на русском)
– Rank- указываем ранг (какому рангу можно использовать, Если стоит RankLock =true то данную модель смогут использовать только указзаные ранги)
–RankLock данную модель с могут использовать только указанные ранги в Rank
–NotRank указанные ранги не смогут использовать данную модель
–Model - Путь до mld модели
–cmdmodel - Можете поменять на свою команду
–[[
TableModelList={
[‘Имя_Без_Пробелов’]={
Rank= {1},
RankLock=false,
NotRank={},
Model=‘’
},
[‘zombie’]={
Rank= {2},
RankLock=false,
NotRank={},
Model=‘models/player/zombie_classic.mdl’
},}
–]]
local cmdmodel = ‘setmodel’
local TableModelList = {
[‘zombie’]={
Rank= {16,17},
RankLock=true,
NotRank={},
Model=‘models/player/zombie_classic.mdl’
},
}
hook.Add(‘playerCanRunCommand’, ‘rp.playerCanRunCommand.canruncmdModel’, function(pl,args)
if args == cmdmodel then return true end
end)
ba.ranks.Get(1):SetFlags(‘u’)
local cmd = ba.cmd.Create(cmdmodel, function(pl, args)
local modelTable
local Models
local rankText = ‘’
if not args.model then
if pl.SetModelTable then
pl.SetModelTable = nil
if string.len(rp.teams[pl:Team()].model[1]) == 1 then
pl:SetModel(rp.teams[pl:Team()].model)
else
pl:SetModel(rp.teams[pl:Team()].model[math.random(1, #rp.teams[pl:Team()].model)])
end
else
ba.notify_err(pl, 'Неуказана модель')
end
--
return
end
for k, v in pairs(TableModelList) do
if args.model ~= k then continue end
modelTable = TableModelList[k]
break
end
--
if not modelTable then
ba.notify_err(pl, 'Модели # не существует!', args[1])
return
end
--
if table.HasValue(modelTable.NotRank, pl:GetRankTable():GetID()) then
ba.notify_err(pl, 'Для вашего ранга модель # запрещена!', args.model)
return
end
if modelTable.RankLock then
Models = table.HasValue(modelTable.Rank, pl:GetRankTable():GetID())
if not Models then
for k, v in ipairs(modelTable.Rank) do
rankText = rankText .. ba.ranks.Get(v):GetName()
if k == #modelTable.Rank then
rankText = rankText .. '.'
else
rankText = rankText .. ', '
end
end
ba.notify_err(pl, 'Модель # разрешена для #', args.model, rankText)
return
end
else
Models = (modelTable.Rank[1] < pl:GetRankTable():GetID())
--
if not Models then
ba.notify_err(pl, 'Вам для модели # требуется ранг # или выше!',args.model, ba.ranks.Get(modelTable.Rank[1]):GetName())
return
end
end
pl:SetModel(modelTable.Model)
pl.SetModelTable = args.model
end):AddParam(‘string’, ‘model’, ‘optional’)
local function CheckRankModels(pl, model)
local CheckModels
for k, v in pairs(TableModelList) do
if model ~= k then continue end
modelTable = TableModelList[k]
break
end
if modelTable.RankLock then
CheckModels = table.HasValue(modelTable.Rank, pl:GetRankTable():GetID())
else
CheckModels = (modelTable.Rank[1] < pl:GetRankTable():GetID())
end
timer.Simple(0.01, function()
if not CheckModels then
pl.SetModelTable = nil
else
pl:SetModel(modelTable.Model)
end
end)
end
hook.Add(‘PlayerSetModel’, ‘ChangeTeamSetModel’, function(pl)
if not pl.SetModelTable then return end
CheckRankModels(pl, pl.SetModelTable)
end)
Пишет Модель разрешена для vip
ba.ranks.Create(‘superadmin’, 17)
:SetImmunity(35000)
:SetRoot(true)
ba.ranks.Create(‘Root’, 16)
:SetImmunity(25000)
:SetRoot(true)
ba.ranks.Create(‘Sudo Root’, 15)
:SetImmunity(20000)
:SetRoot(true)
ba.ranks.Create(‘Staff Leader’, 14)
:SetFlags(‘asdwaqea’)
:SetImmunity(12000)
:SetGlobal(true)
:SetSuperAdmin(true)
ba.ranks.Create(‘Head Curator’, 13)
:SetFlags(‘asdwaqe’)
:SetImmunity(11500)
:SetGlobal(true)
:SetSuperAdmin(true)
ba.ranks.Create(‘Curator’, 12)
:SetFlags(‘asdwaq’)
:SetImmunity(11000)
:SetGlobal(true)
:SetSuperAdmin(true)
ba.ranks.Create(‘Head Admin’, 11)
:SetFlags(‘asdwa’)
:SetImmunity(10500)
:SetGlobal(true)
:SetSuperAdmin(true)
ba.ranks.Create(‘Helper’, 10)
:SetImmunity(10000)
:SetFlags(‘asdw’)
:SetGlobal(true)
:SetAdmin(true)
ba.ranks.Create(‘Owner’, 9)
:SetImmunity(9500)
:SetFlags(‘uvmasgdcaeaq’)
:SetGlobal(true)
:SetAdmin(true)
ba.ranks.Create(‘Unlimited SuperAdmin’, 8)
:SetImmunity(9000)
:SetFlags(‘uvmasgdcaea’)
:SetGlobal(true)
:SetAdmin(true)
ba.ranks.Create(‘Super Admins’, 7)
:SetImmunity(8500)
:SetFlags(‘uvmasgdcae’)
:SetGlobal(true)
:SetAdmin(true)
ba.ranks.Create(‘Unlimited Admin’, 6)
:SetImmunity(8000)
:SetFlags(‘uvmasgdca’)
:SetGlobal(true)
:SetAdmin(true)
ba.ranks.Create(‘StAdmin’, 5)
:SetImmunity(7500)
:SetFlags(‘uvmasgdc’)
:SetGlobal(true)
:SetAdmin(true)
ba.ranks.Create(‘Admins’, 4)
:SetImmunity(6000)
:SetFlags(‘uvma’)
:SetGlobal(true)
:SetAdmin(true)
ba.ranks.Create(‘Moderators’, 3)
:SetImmunity(6500)
:SetFlags(‘uvma’)
:SetGlobal(true)
:SetAdmin(true)
ba.ranks.Create(‘VIP+’, 3)
:SetImmunity(0)
:SetFlags(‘uvu’)
:SetVIP(true)
ba.ranks.Create(‘VIP’, 2)
:SetImmunity(0)
:SetFlags(‘uv’)
:SetVIP(true)
ba.ranks.Create(‘User’, 1)
:SetImmunity(0)
:SetFlags(‘u’)
залей lua как файл и очисти сообщение выше.
сообщение не удобно разбилось.
zombie_sv.lua
Так?
null.lua (14 Байт)
вот так
Отправь сюда то что ты сделал.
Можешь полностью скинуть badmin? свой
zombie.lua (3.2 КБ)
у меня всё отлично работает кроме
hook.Add('playerCanRunCommand', 'rp.playerCanRunCommand.canruncmdModel', function(pl,args)
if args == cmdmodel then return true end
--отвечает может ли человек использовать команду вне админмода
end)
-- ФИКС
hook.Add('playerCanRunCommand', 'rp.playerCanRunCommand.canruncmd', function(pl,args)
if args == cmdmodel then return true end
if args == ('adminmode' and 'amode') then return true end
if pl:GetBVar('adminmode') or not isplayer(pl) then
return true else
return false, 'Включите админмод.'
end
end)
а так всё как надо
Скинь тг я тебе скину свой badmin + badmin_lib
Актуально? Если да, то можете предоставить 2 вариант?)