Whisper of the Void

Объявление

Whisper of the Void
Warframe
Your mind is the battlefield
Наша гордость
Текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста текст лучшего поста
С пробуждением, Герой!
Мир, что ты знал, превратился в Стальные Пустоши. Его плоть и металл поглотил Технофагис! Теперь тут правят ржавеющие – зомби, порожденные биотехногенной чумой: гибриды, кошмары инженера-извращенца (плоть + ржавый хлам + голод). Их скрежет – твой новый гимн. Хочешь выжить? Рви когтями, пали из всего, что стреляет, беги, если ноги целы! Или... Впутайся в адскую авантюру! Найди "Сердце Пустошей" – артефакт древних придурков, сотню лет назад устроивших апокалипсис. Может, оно перезапустит этот ад? Или порвёт весь мир в клочья, ко всем чертям собачьим?! Выбор за тобой, Герой... Слава, добыча или смерть? В Пустошах ставки очень высоки!
Повстанцы
Текст текст текст Текст текст текст Текст текст текстТекст текст текст Текст текст текстТекст текст текстТекст текст текстТекст текст текстТекст текст текстТекст текст текстТекст текст текстТекст текст текстТекст текст текстТекст текст текстТекст текст текстТекст текст текст
Аутсайдеры
Текст текст текст Текст текст текст Текст текст текстТекст текст текст Текст текст текстТекст текст текстТекст текст текстТекст текст текстТекст текст текстТекст текст текстТекст текст текстТекст текст текстТекст текст текстТекст текст текстТекст текст текстТекст текст текст
Скальдра
Текст текст текст Текст текст текст Текст текст текстТекст текст текст Текст текст текстТекст текст текстТекст текст текстТекст текст текстТекст текст текстТекст текст текстТекст текст текстТекст текст текстТекст текст текстТекст текст текстТекст текст текстТекст текст текст
Заголовок новости
какой-то там очень чрезвычайно крайне важный текст новости
Заголовок новости
какой-то там очень чрезвычайно крайне важный текст новости
Заголовок новости
какой-то там очень чрезвычайно крайне важный текст новости

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Whisper of the Void » Точка Сингулярности » Скрипт сезона


Скрипт сезона

Сообщений 1 страница 5 из 5

1

[html]<style>
#season-widget {
    width: 200px;
    height: 200px;
    border: 2px solid;
    border-radius: 10px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    font-family: Arial, sans-serif;
    font-weight: bold;
    position: relative;
    overflow: hidden;
    box-sizing: border-box;
    padding: 10px;
    text-align: center;
    margin: 10px;
}

.season-autumn {
    background: linear-gradient(135deg, #fbe9e7, #ffab91);
    border-color: #ff8a65;
    color: #d84315;
}

.season-winter {
    background: linear-gradient(135deg, #e3f2fd, #bbdefb);
    border-color: #90caf9;
    color: #1565c0;
}

.season-spring {
    background: linear-gradient(135deg, #e8f5e8, #c8e6c9);
    border-color: #81c784;
    color: #2e7d32;
}

.season-summer {
    background: linear-gradient(135deg, #fff3e0, #ffcc80);
    border-color: #ffb74d;
    color: #ef6c00;
}

.season-name {
    font-size: 24px;
    margin-bottom: 10px;
}

.season-timer {
    font-size: 12px;
}

.days-left {
    font-size: 16px;
    color: #d32f2f;
    display: block;
    margin-top: 5px;
}

.decor {
    position: absolute;
    top: 10px;
    right: 10px;
    font-size: 20px;
    opacity: 0.5;
}
</style>

<div id="season-widget" class="season-autumn">
    <div class="season-name">ОСЕНЬ</div>
    <div class="season-timer">
        ВРЕМЯ ДО ОКОНЧАНИЯ:
        <span class="days-left">100</span> ДНЕЙ
    </div>
    <div class="decor">🍂</div>
</div>

<script>
// УЛЬТРА-ПРОСТАЯ ВЕРСИЯ - сразу выполняем код
console.log('=== СЕЗОННЫЙ СКРИПТ ЗАПУЩЕН ===');

// Ждем немного чтобы DOM точно загрузился
setTimeout(function() {
    try {
        // Создаем простой расчет
        const startDate = new Date('2025-06-01'); // Прошедшая дата для теста
        const now = new Date();
        const diffDays = Math.floor((now - startDate) / (1000 * 60 * 60 * 24));
        const currentSeasonIndex = Math.floor(diffDays / 30) % 4; // Меняем каждые 30 дней для теста
        const daysInSeason = diffDays % 30;
        const daysLeft = 30 - daysInSeason;
       
        const seasons = [
            { name: 'ОСЕНЬ', class: 'autumn', decor: '🍂' },
            { name: 'ЗИМА', class: 'winter', decor: '❄️' },
            { name: 'ВЕСНА', class: 'spring', decor: '🌱' },
            { name: 'ЛЕТО', class: 'summer', decor: '☀️' }
        ];
       
        const currentSeason = seasons[currentSeasonIndex];
       
        // Находим элементы
        const widget = document.getElementById('season-widget');
        const nameEl = widget.querySelector('.season-name');
        const daysEl = widget.querySelector('.days-left');
        const decorEl = widget.querySelector('.decor');
       
        // Обновляем
        nameEl.textContent = currentSeason.name;
        daysEl.textContent = daysLeft;
        decorEl.textContent = currentSeason.decor;
        widget.className = 'season-' + currentSeason.class;
       
        console.log('Сезон успешно обновлен:', currentSeason.name, 'Осталось дней:', daysLeft);
       
    } catch (error) {
        console.error('Ошибка в скрипте сезонов:', error);
    }
}, 100);
</script>[/html]

0

2

[html]<div class="myawards">
<div class="aw"><i class="fa-solid fa-award"></i><span>Постописец: лучший пост</span></div>
<div class="aw"><i class="fa-solid fa-star"></i><span>Звезда: активность</span></div>
<div class="aw"><i class="fa-solid fa-heart"></i><span>Фаворит: популярность</span></div>
</div>

<style>.myawards{display:flex;gap:15px;padding:10px}.aw{position:relative;font-size:1.5rem;color:#ffd700;cursor:pointer}.aw:hover{transform:scale(1.1)}.aw span{position:absolute;bottom:100%;left:50%;transform:translateX(-50%);background:#000;color:#fff;padding:5px 8px;border-radius:4px;font-size:12px;white-space:nowrap;opacity:0;visibility:hidden;transition:.3s}.aw:hover span{opacity:1;visibility:visible;bottom:120%}</style>[/html]

0

3

[html]<div class='season-widget' id='season-widget'>
  <div class='season'>Загрузка...</div>
  <div class='day'>Загрузка...</div>
</div>

<style>
.season-widget {
  padding: 15px;
  border-radius: 8px;
  text-align: center;
  font-family: Arial, sans-serif;
  background-size: cover;
  background-position: center;
  min-height: 120px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  box-shadow: 0 4px 6px rgba(0,0,0,0.1);
}

.season {
  font-size: 24px;
  font-weight: bold;
  margin-bottom: 10px;
  text-shadow: 1px 1px 2px rgba(0,0,0,0.5);
}

.day {
  font-size: 16px;
  text-shadow: 1px 1px 2px rgba(0,0,0,0.5);
}

/* Сезонные стили */
.winter {
  background-image: url('https://forumstatic.ru/files/001c/92/09/26714.png');
  color: #87CEEB; /* голубой */
}

.spring {
  background-image: url('https://forumstatic.ru/files/001c/92/09/32869.png');
  color: #FFB6C1; /* персиково-розовый */
}

.summer {
  background-image: url('https://forumstatic.ru/files/001c/92/09/55149.png');
  color: #90EE90; /* тёпло-зелёный */
}

.autumn {
  background-image: url('https://forumstatic.ru/files/001c/92/09/13274.png');
  color: #FFA500; /* оранжевый */
}
</style>

<script>
// Конфигурация - установите свою стартовую дату
const START_DATE = new Date('2023-04-01'); // Замените на вашу стартовую дату
const SEASON_DAYS = 100;

// Названия сезонов
const SEASONS = {
  winter: { ru: 'Зима', order: 0 },
  spring: { ru: 'Весна', order: 1 },
  summer: { ru: 'Лето', order: 2 },
  autumn: { ru: 'Осень', order: 3 }
};

function calculateSeason() {
  const now = new Date();
  const timeDiff = now - START_DATE;
  const daysPassed = Math.floor(timeDiff / (1000 * 60 * 60 * 24));
 
  // Вычисляем текущий сезонный цикл
  const totalSeasonDays = Object.keys(SEASONS).length * SEASON_DAYS;
  const cycleDay = daysPassed % totalSeasonDays;
 
  // Определяем текущий сезон
  let dayCounter = 0;
  for (const [season, data] of Object.entries(SEASONS)) {
    const seasonStart = data.order * SEASON_DAYS;
    const seasonEnd = seasonStart + SEASON_DAYS;
   
    if (cycleDay >= seasonStart && cycleDay < seasonEnd) {
      const daysLeftInSeason = seasonEnd - cycleDay - 1;
      return {
        id: season,
        name: data.ru,
        daysLeft: daysLeftInSeason
      };
    }
  }
 
  // Fallback на зиму
  return {
    id: 'winter',
    name: 'Зима',
    daysLeft: 0
  };
}

function updateWidget() {
  const seasonData = calculateSeason();
  const widget = document.getElementById('season-widget');
 
  // Обновляем ID и классы
  widget.id = seasonData.id;
  widget.className = 'season-widget ' + seasonData.id;
 
  // Обновляем содержимое
  widget.querySelector('.season').textContent = seasonData.name;
  widget.querySelector('.day').textContent = `До конца сезона: ${seasonData.daysLeft} дней`;
}

// Инициализация и обновление каждые 24 часа
updateWidget();
setInterval(updateWidget, 24 * 60 * 60 * 1000);
</script>[/html]

0

4

[html]<style>
/* Стили для блока коллекционирования */
.collection-block {
    background: linear-gradient(135deg,
        rgba(20, 19, 22, 0.95) 0%,
        rgba(40, 38, 45, 0.9) 100%);
    border: 2px solid #5d5a66;
    border-radius: 12px;
    padding: 20px;
    margin: 15px 0;
    position: relative;
    box-shadow:
        0 8px 25px rgba(0, 0, 0, 0.6),
        inset 0 1px 0 rgba(255, 255, 255, 0.1);
}

.collection-block::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 1px;
    background: linear-gradient(90deg,
        transparent,
        #eaa65f,
        transparent);
}

.collection-title {
    text-align: center;
    color: #eaa65f;
    font-size: 1.3em;
    margin-bottom: 20px;
    text-shadow: 0 0 10px rgba(234, 166, 95, 0.5);
    font-weight: 600;
    letter-spacing: 1px;
}

/* Деревянный стеллаж */
.shelf {
    background: linear-gradient(to bottom,
        #8B4513 0%,
        #A0522D 20%,
        #8B4513 40%,
        #654321 60%,
        #8B4513 80%,
        #A0522D 100%);
    border: 3px solid #5D4037;
    border-radius: 8px;
    padding: 25px 15px 15px;
    margin: 10px 0;
    position: relative;
    box-shadow:
        inset 0 2px 4px rgba(0, 0, 0, 0.5),
        0 4px 8px rgba(0, 0, 0, 0.4);
}

.shelf::before {
    content: '';
    position: absolute;
    top: -2px;
    left: 10px;
    right: 10px;
    height: 4px;
    background: linear-gradient(90deg,
        #D2691E,
        #F4A460,
        #D2691E);
    border-radius: 2px;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
}

/* Сетка предметов */
.collection-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
    gap: 15px;
    align-items: end;
}

.collection-item {
    text-align: center;
    transition: all 0.3s ease;
    position: relative;
    padding: 10px 5px;
}

.collection-item:hover {
    transform: translateY(-5px);
}

.collection-item img {
    width: 70px;
    height: 70px;
    object-fit: contain;
    filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.6));
    transition: all 0.3s ease;
    border-radius: 6px;
    background: rgba(20, 19, 22, 0.7);
    padding: 5px;
}

.collection-item:hover img {
    transform: scale(1.1);
    filter:
        drop-shadow(0 6px 12px rgba(234, 166, 95, 0.4))
        brightness(1.2);
}

.item-name {
    color: #e8e6e3;
    font-size: 0.75em;
    margin-top: 8px;
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.8);
    font-weight: 500;
    line-height: 1.2;
    background: rgba(20, 19, 22, 0.8);
    padding: 3px 6px;
    border-radius: 4px;
    border: 1px solid rgba(93, 90, 102, 0.5);
}

/* Эффекты для редких предметов */
.collection-item.rare img {
    border: 2px solid #eaa65f;
    box-shadow:
        inset 0 0 10px rgba(234, 166, 95, 0.3),
        0 0 15px rgba(234, 166, 95, 0.2);
}

.collection-item.rare .item-name {
    color: #eaa65f;
    text-shadow: 0 0 5px rgba(234, 166, 95, 0.5);
}

/* Индикатор коллекции */
.collection-progress {
    text-align: center;
    margin-top: 20px;
    padding: 15px;
    background: rgba(93, 90, 102, 0.3);
    border-radius: 8px;
    border: 1px solid rgba(234, 166, 95, 0.2);
}

.progress-text {
    color: #a8c0d0;
    font-size: 0.9em;
    margin-bottom: 8px;
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
}

.progress-bar {
    height: 6px;
    background: rgba(20, 19, 22, 0.8);
    border-radius: 3px;
    overflow: hidden;
    border: 1px solid rgba(93, 90, 102, 0.5);
}

.progress-fill {
    height: 100%;
    background: linear-gradient(90deg,
        #eaa65f,
        #a8c0d0,
        #eaa65f);
    background-size: 200% 100%;
    animation: shimmer 2s infinite;
    border-radius: 2px;
}

@keyframes shimmer {
    0% { background-position: -200% 0; }
    100% { background-position: 200% 0; }
}

/* Анимация появления предметов */
@keyframes itemReveal {
    0% {
        opacity: 0;
        transform: translateY(20px) scale(0.8);
    }
    100% {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

.collection-item {
    animation: itemReveal 0.6s ease forwards;
}

/* Задержки для анимации */
.collection-item:nth-child(1) { animation-delay: 0.1s; }
.collection-item:nth-child(2) { animation-delay: 0.2s; }
.collection-item:nth-child(3) { animation-delay: 0.3s; }
.collection-item:nth-child(4) { animation-delay: 0.4s; }
.collection-item:nth-child(5) { animation-delay: 0.5s; }
.collection-item:nth-child(6) { animation-delay: 0.6s; }

/* Адаптивность */
@media (max-width: 768px) {
    .collection-grid {
        grid-template-columns: repeat(3, 1fr);
        gap: 10px;
    }
   
    .collection-item img {
        width: 60px;
        height: 60px;
    }
   
    .item-name {
        font-size: 0.7em;
    }
}
</style>

<div class="collection-block">
    <div class="collection-title">
        <i class="fa-solid fa-cubes"></i>
        Коллекция артефактов
    </div>
   
    <div class="shelf">
        <div class="collection-grid">
            <div class="collection-item rare">
                <img src="https://forumstatic.ru/files/001c/92/09/51173.png" alt="Хрустальный шар">
                <div class="item-name">Хрустальный шар</div>
            </div>
            <div class="collection-item">
                <img src="https://forumstatic.ru/files/001c/92/09/24195.png" alt="Древний свиток">
                <div class="item-name">Древний свиток</div>
            </div>
            <div class="collection-item rare">
                <img src="https://forumstatic.ru/files/001c/92/09/27724.png" alt="Мистический жезл">
                <div class="item-name">Мистический жезл</div>
            </div>
            <div class="collection-item">
                <img src="https://forumstatic.ru/files/001c/92/09/59285.png" alt="Реликварий">
                <div class="item-name">Реликварий</div>
            </div>
            <div class="collection-item">
                <img src="https://forumstatic.ru/files/001c/92/09/37121.png" alt="Алхимический набор">
                <div class="item-name">Алхимический набор</div>
            </div>
            <div class="collection-item rare">
                <img src="https://forumstatic.ru/files/001c/92/09/84952.png" alt="Зачарованный кристалл">
                <div class="item-name">Зачарованный кристалл</div>
            </div>
            <div class="collection-item rare">
                <img src="https://forumstatic.ru/files/001c/92/09/84952.png" alt="Зачарованный кристалл">
                <div class="item-name">Зачарованный кристалл</div>
            </div>
            <div class="collection-item rare">
                <img src="https://forumstatic.ru/files/001c/92/09/84952.png" alt="Зачарованный кристалл">
                <div class="item-name">Зачарованный кристалл</div>
            </div>
        </div>
    </div>
   
    <div class="collection-progress">
        <div class="progress-text">Коллекция завершена на 75%</div>
        <div class="progress-bar">
            <div class="progress-fill" style="width: 75%"></div>
        </div>
    </div>
</div>[/html]

0

5

[html]<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Warframe Cards - Настольная игра</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
        }

        body {
            background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
            color: #fff;
            padding: 20px;
            min-height: 100vh;
        }

        .container {
            max-width: 1200px;
            margin: 0 auto;
        }

        .header {
            text-align: center;
            margin-bottom: 40px;
            padding: 20px;
            background: rgba(0, 0, 0, 0.3);
            border-radius: 15px;
            border: 2px solid #00ffff;
        }

        .filters {
            display: flex;
            justify-content: center;
            gap: 15px;
            margin-bottom: 30px;
            flex-wrap: wrap;
        }

        .filter-btn {
            padding: 10px 20px;
            background: #2d3047;
            color: #fff;
            border: 1px solid #00ffff;
            border-radius: 25px;
            cursor: pointer;
            transition: all 0.3s ease;
        }

        .filter-btn:hover, .filter-btn.active {
            background: #00ffff;
            color: #000;
        }

        .warframe-grid {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(350px, 1fr));
            gap: 25px;
        }

        .warframe-card {
            background: linear-gradient(145deg, #2d3047 0%, #1b1b2f 100%);
            border-radius: 20px;
            padding: 20px;
            border: 2px solid #00ffff;
            box-shadow: 0 10px 30px rgba(0, 255, 255, 0.1);
            transition: transform 0.3s ease, box-shadow 0.3s ease;
            position: relative;
            overflow: hidden;
        }

        .warframe-card:hover {
            transform: translateY(-10px);
            box-shadow: 0 15px 40px rgba(0, 255, 255, 0.2);
        }

        .warframe-card::before {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            height: 4px;
            background: linear-gradient(90deg, #ff6b6b, #4ecdc4, #45b7d1, #96ceb4, #ffeaa7);
        }

        .card-header {
            display: flex;
            align-items: center;
            margin-bottom: 20px;
        }

        .warframe-image {
            width: 80px;
            height: 80px;
            border-radius: 50%;
            border: 2px solid #00ffff;
            margin-right: 15px;
            object-fit: cover;
        }

        .warframe-info {
            flex: 1;
        }

        .warframe-name {
            font-size: 1.5em;
            font-weight: bold;
            margin-bottom: 5px;
            color: #00ffff;
        }

        .warframe-roles {
            display: flex;
            gap: 8px;
            flex-wrap: wrap;
        }

        .role-tag {
            background: rgba(0, 255, 255, 0.2);
            padding: 4px 10px;
            border-radius: 15px;
            font-size: 0.8em;
            border: 1px solid #00ffff;
        }

        .abilities-section {
            margin-top: 20px;
        }

        .section-title {
            font-size: 1.1em;
            margin-bottom: 15px;
            color: #ff6b6b;
            border-bottom: 1px solid #444;
            padding-bottom: 5px;
        }

        .ability {
            background: rgba(255, 255, 255, 0.05);
            border-radius: 10px;
            padding: 12px;
            margin-bottom: 10px;
            border-left: 3px solid #4ecdc4;
        }

        .ability.passive {
            border-left-color: #ffeaa7;
        }

        .ability-name {
            font-weight: bold;
            color: #4ecdc4;
            margin-bottom: 5px;
            display: flex;
            align-items: center;
            gap: 8px;
        }

        .ability.passive .ability-name {
            color: #ffeaa7;
        }

        .ability-description {
            font-size: 0.9em;
            line-height: 1.4;
            color: #ccc;
        }

        .ability-icon {
            width: 20px;
            height: 20px;
            background: #444;
            border-radius: 4px;
            display: inline-block;
        }

        .card-footer {
            margin-top: 15px;
            padding-top: 15px;
            border-top: 1px solid #444;
            font-size: 0.8em;
            color: #888;
            text-align: center;
        }

        @media (max-width: 768px) {
            .warframe-grid {
                grid-template-columns: 1fr;
            }
           
            .filters {
                flex-direction: column;
                align-items: center;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="header">
            <h1>WARFRAME CARDS</h1>
            <p>Коллекция карточек для настольной ролевой игры</p>
        </div>

        <div class="filters">
            <button class="filter-btn active" data-role="all">Все</button>
            <button class="filter-btn" data-role="damage">Урон</button>
            <button class="filter-btn" data-role="support">Поддержка</button>
            <button class="filter-btn" data-role="survival">Выживание</button>
            <button class="filter-btn" data-role="stealth">Скрытность</button>
            <button class="filter-btn" data-role="crowdcontrol">Контроль</button>
        </div>

        <div class="warframe-grid" id="warframeGrid">
            <!-- Карточки будут добавляться через JavaScript -->
        </div>
    </div>

    <script>
        // Данные варфреймов
        const warframesData = [
            {
                name: "Atlas",
                image: "https://content.warframe.com/PublicExport/Lotus/Interface/Icons/StoreIcons/Warframes/Atlas.png",
                roles: ["damage", "survival"],
                abilities: {
                    passive: "Иммунитет к отбрасыванию при нахождении на земле. Поверженные окаменевшие враги оставляют Обломки, которые лечат Атласа или дают ему бонус к броне.",
                    active: [
                        { name: "Оползень", description: "Мощный повторяющийся удар, который устремляется вперед и наносит урон по площади." },
                        { name: "Тектоника", description: "Создает каменную стену, блокирующую вражеский огонь. Можно зарядить, чтобы скатить ее вперед как валун." },
                        { name: "Окаменение", description: "Атака конусом, превращающая врагов в камень, делая их уязвимыми и позволяя оставлять Обломки." },
                        { name: "Грохот", description: "Призывает двух элементалей камня для сражения за Атласа." }
                    ]
                }
            },
            {
                name: "Banshee",
                image: "https://content.warframe.com/PublicExport/Lotus/Interface/Icons/StoreIcons/Warframes/Banshee.png",
                roles: ["crowdcontrol"],
                abilities: {
                    passive: "Все оружие Банши работает бесшумно, не предупреждая врагов при стрельбе.",
                    active: [
                        { name: "Звуковой удар", description: "Излучает звуковую ударную волну, которая отбрасывает врагов в широком конусе." },
                        { name: "Сонар", description: "Обнаруживает уязвимые места врагов, которые умножают урон при попадании." },
                        { name: "Тишина", description: "Создает область, которая оглушает врагов, входящих в нее, и заглушает все звуки оружия." },
                        { name: "Звуковое землетрясение", description: "Создает ударные волны, наносящие урон и оглушающие всех врагов на большой площади." }
                    ]
                }
            },
            {
                name: "Frost",
                image: "https://content.warframe.com/PublicExport/Lotus/Interface/Icons/StoreIcons/Warframes/Frost.png",
                roles: ["crowdcontrol", "survival"],
                abilities: {
                    passive: "Способности имеют увеличенную длительность эффекта статуса Холод. Враги с эффектом Холода в радиусе аффинити дают Фросту бонус к броне.",
                    active: [
                        { name: "Замораживание", description: "Запускает ледяной снаряд, который замораживает единственную цель на месте." },
                        { name: "Ледяная волна", description: "Посылает волну острого льда вперед, нанося урон и замедляя врагов на широком пути." },
                        { name: "Снежный шар", description: "Создает защитную сферу льда, блокирующую вражеские выстрелы. Кратко неуязвим при создании." },
                        { name: "Лавина", description: "Выпускает волну мороза, которая наносит урон всем ближайшим врагам и снижает их броню." }
                    ]
                }
            },
            {
                name: "Volt",
                image: "https://content.warframe.com/PublicExport/Lotus/Interface/Icons/StoreIcons/Warframes/Volt.png",
                roles: ["damage", "support"],
                abilities: {
                    passive: "Накопитель заряда: накапливает статическое электричество при движении, добавляя бонусный урон Электричеством к следующей атаке.",
                    active: [
                        { name: "Шок", description: "Запускает снаряд, который передает урон Электричеством нескольким ближайшим врагам." },
                        { name: "Скорость", description: "Заряжает Вольта и ближайших союзников, значительно увеличивая их скорость передвижения и атаки." },
                        { name: "Электрический щит", description: "Развертывает энергетический барьер, блокирующий вражеский огонь и усиливающий выстрелы, произведенные сквозь него." },
                        { name: "Разряд", description: "Выпускает мощное электрическое поле, которое оглушает и наносит урон врагам на большой площади." }
                    ]
                }
            },
            {
                name: "Mag",
                image: "https://content.warframe.com/PublicExport/Lotus/Interface/Icons/StoreIcons/Warframes/Mag.png",
                roles: ["crowdcontrol"],
                abilities: {
                    passive: "Автоматически притягивает предметы в радиусе 8 метров к себе.",
                    active: [
                        { name: "Притяжение", description: "Создает магнитный вихрь, который отбрасывает и притягивает врагов к Мэг." },
                        { name: "Намагничивание", description: "Захватывает цель в магнитном поле, которое захватывает снаряды и наносит периодический урон." },
                        { name: "Поляризация", description: "Излучает волну, которая истощает щиты и броню врагов, одновременно восстанавливая щиты союзников." },
                        { name: "Раздавить", description: "Телекинетически поднимает врагов, нанося массовый Магнитный урон и снимая их броню." }
                    ]
                }
            }
        ];

        // Функция для создания карточки варфрейма
        function createWarframeCard(warframe) {
            const card = document.createElement('div');
            card.className = 'warframe-card';
            card.dataset.roles = warframe.roles.join(' ');

            const rolesHTML = warframe.roles.map(role =>
                `<span class="role-tag">${getRoleName(role)}</span>`
            ).join('');

            const abilitiesHTML = warframe.abilities.active.map((ability, index) => `
                <div class="ability">
                    <div class="ability-name">
                        <span class="ability-icon"></span>
                        ${index + 1}. ${ability.name}
                    </div>
                    <div class="ability-description">${ability.description}</div>
                </div>
            `).join('');

            card.innerHTML = `
                <div class="card-header">
                    <img src="${warframe.image}" alt="${warframe.name}" class="warframe-image" onerror="this.src='https://via.placeholder.com/80x80/2d3047/00ffff?text=?'">
                    <div class="warframe-info">
                        <div class="warframe-name">${warframe.name}</div>
                        <div class="warframe-roles">${rolesHTML}</div>
                    </div>
                </div>
               
                <div class="abilities-section">
                    <div class="section-title">СПОСОБНОСТИ</div>
                   
                    <div class="ability passive">
                        <div class="ability-name">
                            <span class="ability-icon"></span>
                            Пассивная
                        </div>
                        <div class="ability-description">${warframe.abilities.passive}</div>
                    </div>
                   
                    ${abilitiesHTML}
                </div>
               
                <div class="card-footer">
                    Warframe RPG Card © 2024
                </div>
            `;

            return card;
        }

        // Функция для получения русского названия роли
        function getRoleName(role) {
            const roleNames = {
                'damage': 'Урон',
                'support': 'Поддержка',
                'survival': 'Выживание',
                'stealth': 'Скрытность',
                'crowdcontrol': 'Контроль'
            };
            return roleNames[role] || role;
        }

        // Функция для фильтрации карточек
        function filterCards(role) {
            const cards = document.querySelectorAll('.warframe-card');
            cards.forEach(card => {
                if (role === 'all' || card.dataset.roles.includes(role)) {
                    card.style.display = 'block';
                } else {
                    card.style.display = 'none';
                }
            });
        }

        // Инициализация
        document.addEventListener('DOMContentLoaded', () => {
            const grid = document.getElementById('warframeGrid');
           
            // Создаем карточки для каждого варфрейма
            warframesData.forEach(warframe => {
                const card = createWarframeCard(warframe);
                grid.appendChild(card);
            });

            // Добавляем обработчики для кнопок фильтра
            document.querySelectorAll('.filter-btn').forEach(btn => {
                btn.addEventListener('click', () => {
                    document.querySelectorAll('.filter-btn').forEach(b => b.classList.remove('active'));
                    btn.classList.add('active');
                    filterCards(btn.dataset.role);
                });
            });
        });
    </script>
</body>
</html>[/html]

0


Вы здесь » Whisper of the Void » Точка Сингулярности » Скрипт сезона


Рейтинг форумов | Создать форум бесплатно