Dantes (обсуждение | вклад) (Создана пустая страница) |
Dantes (обсуждение | вклад) Нет описания правки |
||
| (не показана 1 промежуточная версия этого же участника) | |||
| Строка 1: | Строка 1: | ||
local p = {} | |||
-- Цвета для каждого отдела | |||
local department_colors = { | |||
["Командование"] = "#372686", -- фиолетовый | |||
["Медицинский Отдел"] = "#28a745", -- зелёный | |||
["Служба безопасности"] = "#dc3545", -- красный | |||
["Антагонисты"] = "#ffc107" -- жёлтый | |||
} | |||
-- Список ролей с иконками | |||
local roles = { | |||
["Командование"] = { | |||
{role = "Капитан", icon = "File:Капитан.png"}, | |||
{role = "Глава персонала", icon = "File:Глава_Персонала.png"}, | |||
{role = "Глава службы безопасности", icon = "File:Глава Службы Безопасности.png"}, | |||
{role = "Старший Инженер", icon = "File:Старший_инженер.png"}, | |||
{role = "Научный руководитель", icon = "File:Научный руководитель.png"}, | |||
{role = "Главный врач", icon = "File:Главный врач.png"}, | |||
{role = "Квартирмейстер", icon = "File:Квартирмейстер.png"} | |||
} | |||
-- Добавь сюда другие отделы, если нужно | |||
} | |||
-- Основная функция для генерации HTML | |||
function p.roles(frame) | |||
local department = frame.args[1] or "Неизвестно" | |||
local list = roles[department] | |||
local color = department_colors[department] or "#FFFFFF" -- белый, если цвет не найден | |||
if not list then | |||
return "<b>Неизвестный отдел: " .. department .. "</b>" | |||
end | |||
-- Начинаем формировать HTML | |||
local out = {} | |||
table.insert(out, string.format( | |||
'<div class="nomobile"><div class="biglink" style="margin:0px; text-shadow: 2px 3px black, 3px 5px %s; text-align: center; font-size: 40px; line-height:50px"><span class="sprite">[[File:cmd_dep.png|64px|link=%s]]</span> [[%s]]</div>', | |||
color, department, department | |||
)) | |||
table.insert(out, "<center><b>Глава отдела: [[Капитан]]<br>[[Радио|Канал отдела '':к'']]</b></center>") | |||
-- Выводим заголовок для сотрудников отдела | |||
table.insert(out, string.format('<div style="padding:2px;background:%s;border-radius:.3em;margin-bottom:.2em"><center><b>Сотрудники отдела:</b></center></div>', color)) | |||
-- Разделим роли на две части (чтобы было удобнее) | |||
local role_section1 = {} | |||
local role_section2 = {} | |||
-- Перебираем роли и добавляем их в разделы | |||
for i, roleData in ipairs(list) do | |||
local role_html = string.format( | |||
'<div style="display:flex; flex-direction:column; align-items:center; padding:5px;"><div><br>[[%s]]</div><div class="sprite">[[%s|146x146px|link=%s]]</div></div>', | |||
roleData.role, roleData.icon, roleData.role | |||
) | |||
if i <= math.ceil(#list / 2) then | |||
table.insert(role_section1, role_html) | |||
else | |||
table.insert(role_section2, role_html) | |||
end | |||
end | |||
-- Вставляем разделы ролей в HTML | |||
table.insert(out, '<div style="display:flex; width:55%; justify-content:space-around; flex-wrap:wrap">') | |||
table.insert(out, table.concat(role_section1, "\n")) | |||
table.insert(out, '</div>') | |||
table.insert(out, '<div style="display:flex; width:65%; justify-content:space-around; flex-wrap:wrap">') | |||
table.insert(out, table.concat(role_section2, "\n")) | |||
table.insert(out, '</div>') | |||
-- Заключение с дополнительной информацией | |||
table.insert(out, string.format( | |||
'<div style="padding:2px;background:%s;border-radius:.3em;margin-bottom:.2em"><center><b>Связанные руководства:</b></center></div>', | |||
color | |||
)) | |||
table.insert(out, "<center>[[Стандартные Рабочие Процедуры (Командование)]] • [[Задачи станции]]</center>") | |||
table.insert(out, "<br></div>") | |||
-- Возвращаем сгенерированный HTML | |||
return table.concat(out, "\n") | |||
end | |||
return p | |||
Текущая версия от 22:43, 20 апреля 2025
Для документации этого модуля может быть создана страница Модуль:Dante/doc
local p = {}
-- Цвета для каждого отдела
local department_colors = {
["Командование"] = "#372686", -- фиолетовый
["Медицинский Отдел"] = "#28a745", -- зелёный
["Служба безопасности"] = "#dc3545", -- красный
["Антагонисты"] = "#ffc107" -- жёлтый
}
-- Список ролей с иконками
local roles = {
["Командование"] = {
{role = "Капитан", icon = "File:Капитан.png"},
{role = "Глава персонала", icon = "File:Глава_Персонала.png"},
{role = "Глава службы безопасности", icon = "File:Глава Службы Безопасности.png"},
{role = "Старший Инженер", icon = "File:Старший_инженер.png"},
{role = "Научный руководитель", icon = "File:Научный руководитель.png"},
{role = "Главный врач", icon = "File:Главный врач.png"},
{role = "Квартирмейстер", icon = "File:Квартирмейстер.png"}
}
-- Добавь сюда другие отделы, если нужно
}
-- Основная функция для генерации HTML
function p.roles(frame)
local department = frame.args[1] or "Неизвестно"
local list = roles[department]
local color = department_colors[department] or "#FFFFFF" -- белый, если цвет не найден
if not list then
return "<b>Неизвестный отдел: " .. department .. "</b>"
end
-- Начинаем формировать HTML
local out = {}
table.insert(out, string.format(
'<div class="nomobile"><div class="biglink" style="margin:0px; text-shadow: 2px 3px black, 3px 5px %s; text-align: center; font-size: 40px; line-height:50px"><span class="sprite">[[File:cmd_dep.png|64px|link=%s]]</span> [[%s]]</div>',
color, department, department
))
table.insert(out, "<center><b>Глава отдела: [[Капитан]]<br>[[Радио|Канал отдела '':к'']]</b></center>")
-- Выводим заголовок для сотрудников отдела
table.insert(out, string.format('<div style="padding:2px;background:%s;border-radius:.3em;margin-bottom:.2em"><center><b>Сотрудники отдела:</b></center></div>', color))
-- Разделим роли на две части (чтобы было удобнее)
local role_section1 = {}
local role_section2 = {}
-- Перебираем роли и добавляем их в разделы
for i, roleData in ipairs(list) do
local role_html = string.format(
'<div style="display:flex; flex-direction:column; align-items:center; padding:5px;"><div><br>[[%s]]</div><div class="sprite">[[%s|146x146px|link=%s]]</div></div>',
roleData.role, roleData.icon, roleData.role
)
if i <= math.ceil(#list / 2) then
table.insert(role_section1, role_html)
else
table.insert(role_section2, role_html)
end
end
-- Вставляем разделы ролей в HTML
table.insert(out, '<div style="display:flex; width:55%; justify-content:space-around; flex-wrap:wrap">')
table.insert(out, table.concat(role_section1, "\n"))
table.insert(out, '</div>')
table.insert(out, '<div style="display:flex; width:65%; justify-content:space-around; flex-wrap:wrap">')
table.insert(out, table.concat(role_section2, "\n"))
table.insert(out, '</div>')
-- Заключение с дополнительной информацией
table.insert(out, string.format(
'<div style="padding:2px;background:%s;border-radius:.3em;margin-bottom:.2em"><center><b>Связанные руководства:</b></center></div>',
color
))
table.insert(out, "<center>[[Стандартные Рабочие Процедуры (Командование)]] • [[Задачи станции]]</center>")
table.insert(out, "<br></div>")
-- Возвращаем сгенерированный HTML
return table.concat(out, "\n")
end
return p