dobrograd-13-06-2022/garrysmod/addons/gmod-tools/lua/autorun/server/dbg-event.lua
Jonny_Bro (Nikita) e4d5311906 first commit
2023-11-16 15:01:19 +05:00

193 lines
7.3 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

local mdls = {
['female_01'] = 'models/dizcordum/citizens/playermodels/p_female_01.mdl',
['female_02'] = 'models/dizcordum/citizens/playermodels/p_female_02.mdl',
['female_03'] = 'models/dizcordum/citizens/playermodels/p_female_03.mdl',
['female_04'] = 'models/dizcordum/citizens/playermodels/p_female_04.mdl',
['female_06'] = 'models/dizcordum/citizens/playermodels/p_female_06.mdl',
['female_07'] = 'models/dizcordum/citizens/playermodels/p_female_05.mdl',
['male_01_01'] = 'models/dizcordum/citizens/playermodels/pm_male_01.mdl',
['male_01_02'] = 'models/dizcordum/citizens/playermodels/pm_male_01.mdl',
['male_01_03'] = 'models/dizcordum/citizens/playermodels/pm_male_01.mdl',
['male_02_01'] = 'models/dizcordum/citizens/playermodels/pm_male_02.mdl',
['male_02_02'] = 'models/dizcordum/citizens/playermodels/pm_male_02.mdl',
['male_02_03'] = 'models/dizcordum/citizens/playermodels/pm_male_02.mdl',
['male_03_01'] = 'models/dizcordum/citizens/playermodels/pm_male_03.mdl',
['male_03_02'] = 'models/dizcordum/citizens/playermodels/pm_male_03.mdl',
['male_03_03'] = 'models/dizcordum/citizens/playermodels/pm_male_03.mdl',
['male_03_04'] = 'models/dizcordum/citizens/playermodels/pm_male_03.mdl',
['male_03_05'] = 'models/dizcordum/citizens/playermodels/pm_male_03.mdl',
['male_03_06'] = 'models/dizcordum/citizens/playermodels/pm_male_03.mdl',
['male_03_07'] = 'models/dizcordum/citizens/playermodels/pm_male_03.mdl',
['male_04_01'] = 'models/dizcordum/citizens/playermodels/pm_male_04.mdl',
['male_04_02'] = 'models/dizcordum/citizens/playermodels/pm_male_04.mdl',
['male_04_03'] = 'models/dizcordum/citizens/playermodels/pm_male_04.mdl',
['male_04_04'] = 'models/dizcordum/citizens/playermodels/pm_male_04.mdl',
['male_05_01'] = 'models/dizcordum/citizens/playermodels/pm_male_05.mdl',
['male_05_02'] = 'models/dizcordum/citizens/playermodels/pm_male_05.mdl',
['male_05_03'] = 'models/dizcordum/citizens/playermodels/pm_male_05.mdl',
['male_05_04'] = 'models/dizcordum/citizens/playermodels/pm_male_05.mdl',
['male_05_05'] = 'models/dizcordum/citizens/playermodels/pm_male_05.mdl',
['male_06_01'] = 'models/dizcordum/citizens/playermodels/pm_male_06.mdl',
['male_06_02'] = 'models/dizcordum/citizens/playermodels/pm_male_06.mdl',
['male_06_03'] = 'models/dizcordum/citizens/playermodels/pm_male_06.mdl',
['male_06_04'] = 'models/dizcordum/citizens/playermodels/pm_male_06.mdl',
['male_06_05'] = 'models/dizcordum/citizens/playermodels/pm_male_06.mdl',
['male_07_01'] = 'models/dizcordum/citizens/playermodels/pm_male_07.mdl',
['male_07_02'] = 'models/dizcordum/citizens/playermodels/pm_male_07.mdl',
['male_07_03'] = 'models/dizcordum/citizens/playermodels/pm_male_07.mdl',
['male_07_04'] = 'models/dizcordum/citizens/playermodels/pm_male_07.mdl',
['male_07_05'] = 'models/dizcordum/citizens/playermodels/pm_male_07.mdl',
['male_07_06'] = 'models/dizcordum/citizens/playermodels/pm_male_07.mdl',
['male_08_01'] = 'models/dizcordum/citizens/playermodels/pm_male_08.mdl',
['male_08_02'] = 'models/dizcordum/citizens/playermodels/pm_male_08.mdl',
['male_08_03'] = 'models/dizcordum/citizens/playermodels/pm_male_08.mdl',
['male_08_04'] = 'models/dizcordum/citizens/playermodels/pm_male_08.mdl',
['male_09_01'] = 'models/dizcordum/citizens/playermodels/pm_male_07.mdl',
['male_09_02'] = 'models/dizcordum/citizens/playermodels/pm_male_07.mdl',
['male_09_03'] = 'models/dizcordum/citizens/playermodels/pm_male_08.mdl',
['male_09_04'] = 'models/dizcordum/citizens/playermodels/pm_male_07.mdl',
}
local maleBgs = {
{
id = 1,
name = 'Верх',
vals = {
{'Куртка болотного цвета', 0},
{'Серая куртка', 1},
{'Серая куртка с капюшоном', 2},
{'Бирюзовая куртка, расстегнута', 4},
{'Бирюзовая куртка, застегнута', 7},
{'Синяя куртка, расстегнута', 3},
{'Синяя куртка, застегнута', 6},
{'Красная куртка, расстегнута', 5},
{'Красная куртка, застегнута', 8},
},
}, {
id = 2,
name = 'Низ',
vals = {
{'Синие джинсы', 0},
{'Темно-синие джинсы', 1},
{'Серые джинсы', 2},
{'Синие свободные джинсы', 3},
{'Темные свободные джинсы', 4},
{'Серые болоневые штаны', 5},
{'Синие болоневые штаны', 6},
{'Серые рабочие брюки', 7},
{'Камуфляжные рабочие брюки', 8},
},
}, {
id = 3,
name = 'Перчатки',
}, {
id = 4,
name = 'Шапка',
vals = {3},
}
}
local femaleBgs = {
{
id = 1,
name = 'Верх',
vals = {
{'Куртка болотного цвета', 0},
{'Бирюзовая куртка, расстегнута', 1},
{'Бирюзовая куртка, застегнута', 5},
{'Синяя куртка, расстегнута', 2},
{'Синяя куртка, застегнута', 4},
{'Красная куртка, расстегнута', 3},
{'Красная куртка, застегнута', 6},
},
},
{
id = 2,
name = 'Низ',
vals = {
{'Синие джинсы + Ботинки', 0},
{'Брюки + Сапоги', 1},
{'Штаны с полоской + Ботинки', 2},
{'Синие испачканные штаны + Ботинки', 3},
{'Серые испачканные штаны + Ботинки', 4},
{'Серые болоневые штаны', 5},
{'Светлые болоневые штаны', 6},
{'Серые рабочие брюки', 7},
},
}, {
id = 3,
name = 'Перчатки'
}
}
local function getMdlData(ply)
local oldMdl, newMdl = ply:GetModel()
for pattern, mdl in pairs(mdls) do
if oldMdl:find(pattern) then newMdl = mdl break end
end
if not newMdl then return end
return {
name = 'Теплая одежда',
model = newMdl,
unisex = true,
bgs = octolib.models.isMale(newMdl) and maleBgs or femaleBgs,
}
end
function EventMakeRefugee(ply, callback, check)
callback = isfunction(callback) and callback or octolib.func.zero
if not (IsValid(ply) and ply:IsPlayer()) then return callback(false) end
local mdlData = getMdlData(ply)
if not mdlData then return callback(false) end
if ply.pendingRefugee then
ply.pendingRefugee[1](false)
ply.pendingRefugee = nil
end
ply.pendingRefugee = { callback, isfunction(check) and check or octolib.func.yes }
netstream.Start(ply, 'dbg-event.askForRefugee', mdlData)
end
netstream.Hook('dbg-event.askForRefugee', function(ply, userSkin, userBgs)
if not ply.pendingRefugee then return end
local callback, check = unpack(ply.pendingRefugee)
ply.pendingRefugee = nil
if not userSkin then return callback(false) end
local mdlData = getMdlData(ply)
if not mdlData then return callback(false) end
local skin, bgs = octolib.models.getValidSelection(getMdlData(ply), userSkin, userBgs)
if check(ply, skin, bgs) == false then return callback(false) end
ply:SetModel(mdlData.model)
ply:SetSkin(skin)
for _, v in ipairs(ply:GetBodyGroups()) do
ply:SetBodygroup(v.id, bgs[v.id] or 0)
end
callback(true)
end)
concommand.Add('dbg_makerefugee', function(ply, _, args)
if not ply:IsAdmin() then return end
local tgt = player.GetBySteamID(table.concat(args, ''):gsub(' ', ''))
if IsValid(tgt) then
EventMakeRefugee(tgt)
end
end)