Здесь делается вжух 🪄

Тест оформления

Объявление

Katherine
Кэтрин
лает и кусает, ответственная за беспорядки в Своре. изучает личные дела, помогает разобраться в матчасти, отвечает на вопросы о вопросах
Ruby
Руби
(временно мало доступна) маленькая рыбка с большими амбициями, может и плавником шлёпнуть и влажно чмокнуть, и объяснить что к чему, админ-универсал многозадачник
Hardy
Харди
Отвечает по вопросам Альянса. По остальным вопросам не отвечает
Robert
Робби
ответственный за фермы, шизофрению и несмешные шутки, не спит по ночам. гейм-мастер. считает деньги и нервные клетки, ответит на любой вопрос
Correy
Корри
Корри, Корица, Кориандр, Коррор. Работает за пятерых, ещё и бесплатно. Вездесущий помогатор
Jamie
Джейми
На страже флуда топового проекта и ментального состояния других членов амс
Это Джейд. И он выживает здесь один. А теперь вот с ней, с Эбботт. Слова до сих пор все еще не укладывались в голове, ведь они не знали друг о друге ничего. А выживание вместе - это не просто вместе в душ сходить, потрахаться, помыться, это даже не то же самое, что решиться завести совместный быт или семью. Это совершенно изнаночное решение - довериться.
...если я открою спальный район, он будет называться Район Госуслуг

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

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


Вы здесь » Тест оформления » Короткие зарисовки » Тестовое сообщение


Тестовое сообщение

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

1

Благодарим за выбор нашего сервиса!

0

2

[hideprofile]

добро пожаловать в
« С В О Р У »

https://upforme.ru/uploads/001c/0f/f1/9/450346.gif

https://upforme.ru/uploads/001c/0f/f1/9/587046.gif

https://upforme.ru/uploads/001c/0f/f1/9/95553.gif

О Своре

Правила (запреты и наказания)

Внутреннее устройство базы

Хронология

Собаки

Планы на развитие

https://upforme.ru/uploads/001c/0f/f1/3/78029.png
Численность: 60 человек, из них 50 - подготовленные бойцы.
Локация: Свора занимает здание полицейского участка (основное), здание школы и прилегающую территорию небольшого спортивного комплекса. Занимаемая площадь огорожена высоким и укрепленным забором.
В зданиях налажена система водоснабжения, используются установленные водонапорные башни и бойлеры для нагрева воды.
Политика: Не стремятся к сотрудничеству с малыми группами, придерживаются захватнических взглядов, а не дипломатии, на переговоры идут крайне неохотно, и лишь при условии собственной выгоды.
Альянс
15.06.2023-28.08.2024 – нейтралитет, обмен товарами
29.08.2024-... – стрелять на поражение, пленных не брать
Миротворцы
22.10.2024 - 26.10.2024 - конфликт
12.11.2024 -... - нейтралитет, обмен товарами

ОСНОВНЫЕ НАПРАВЛЕНИЯ:
✪ Предоставляются услуги наемников (охрана людей и территории, поисковые отряды, зачистка от зомби, массовые и точечные убийства);
✪ Работорговля (можно приобрести в свою группу человека ценной (и не очень) профессии);
✪ Имеется небольшая лаборатория, в которой производятся легкие и сильные наркотики, и лекарственные препараты;
✪ Обученные собаки (предупреждают о зомби, отвлекают, не используя при этом голос и не кусая зараженную плоть, если не было соответствующей команды)
✪ Медицина. Создание лекарственных препаратов в лаборатории (с сентября 2024)

ЗАПРЕТЫ И НАКАЗАНИЯ:
✪ Убийство одного из членов Своры = смерть.
Чаще всего это медленное и прилюдное убийство, приговоренного могут избить до смерти, использовать любые средства для этого: огнестрел, ножи, биты, кастеты, плети или кулаки. Перед этим нарушитель может подвергаться мучительным пыткам.
Реже за убийство наказывают одними лишь физическими увечьями, после прилюдной экзекуции запирают в карцере от 3 дней до нескольких недель. Запрещено посещение нарушителя, никакой еды, только вода.
✪ Предательство. Предательству нет оправданий. Смерть.
✪ Воровство. Чаще всего «псы» разбираются между собой сами, если ценность краденного высока или это могло повлиять на благополучие всей Своры, решение принимает лидер.
✪ Насилие физическое и сексуальное – не приветствуется, и запрещено по отношению к людям важных профессий, будь они в Своре или в статусе пленных. Наказание определяется лидером
✪ Наказание за мелкие проступки определяют сами члены Своры.
✪ Уход из Своры без предупреждения будет расценен, как предательство. Если имеются веские причины для ухода – обговаривается с лидером в индивидуальном порядке, и ставятся в известность все значимые члены фракции.

ПЛАНИРОВКА ОБЩИХ ПОМЕЩЕНИЙ (1-2)https://upforme.ru/uploads/001c/0f/f1/9/t994446.png
ПЛАНИРОВКА ЖИЛЫХ ЭТАЖЕЙ (3-4 ...)
Любой Своровец может выбрать себе свободную комнату или подселиться к кому-то из игроков. Внутреннее наполнение комнаты можно поменять по требованию, и можно переселиться (если достали соседи)

3 этаж

1   - Riona Powers
2   
3   - Dexter Slater
4   - Marco Rossi
5   - Katherine Grace
6   - Domino Osborne, James White
7   - Antoinette Moon
8   - Katherine Grace (кабинет)
9   - Jane MacLeod (нпс)
10 - Olivia Barton
11 - Correy Sullivan

4 этаж

12 -
13 -
14 -
15 -
16 - Lars Renoir, Melissa Renoir
17 - Jason Bright, Barbara Valley
18 - Gabriela Garcia, Beverley Butler
19 -
20 -
21 - Mike Reynolds
22 - Adam Breaker

https://upforme.ru/uploads/001c/0f/f1/3/141356.png

[05.03.2023] – основание Своры (лидер – Артур Грэйс).
[20.03.2023] – первые переговоры с Альянсом (итог отрицательный).
[03.06.2023] – смерть Артура, новый лидер Своры – Кэтрин Грэйс.
[15.06.2023] – вторые переговоры с Альянсом ( итог положительный; условия: наркотики, дети-рабы, одна обученная собака (вторая через пол года, если договоренности не будут нарушены) => [15.06.2023] Энергетический кризис
[25.01.2024]Отпуск в январе
Amanda Myers (еще будучи в Своре) убивает на вылазке Саймона Рочестора - одного из своих, бывшего заключенного со скверным характером, которого не все в Своре долюбливали (как и его брата – Дилана Рочестора). После совершения преступления девушка бежит, желая добраться до Альянса и найти там свое спасение.
Кэтрин Грэйс отправляет на поиски Аманды Jake Riley и Tyler Hadley, с приказом убить или доставить на базу для показательной казни. Но планы мужчин вынужденно меняются, когда на защиту девушки встает неизвестный (разведчик Альянса – Hardy Knight), ранит Тайлера в ногу, а Аманду забирает с собой.
[10.02.2024]
Tyler Hadley желает найти того, кто помешал ему и Джейку Райли выполнить приказ Грэйс (убить Аманду) и ранил его самого. Он подозревает, что неизвестный может быть из Альянса, с группой ребят из Своры выслеживает Hardy Knight, но появившийся Альянс портит операцию, и в начавшейся перестрелке Тайлер и несколько ребят оказываются под обстрелом. Найта доставляют в Свору, как и было запланировано, а Тайлер захвачен Альянсом.
В перестрелке пострадали обе стороны, есть погибшие.
[10.02.2024] Кровь за кровь
Участники: Hardy Knight, Jake Rob Riley, Katherine Grace
В Своре зреет недовольство. Тайлер Хэдли у Альянса, двое ребят погибли в перестрелке с ними, а Кэтрин Грэйс против того, что бы пленного Харди Найта казнили. Во время переговоров лидер Своры ранит Найта ножом в бедро. Альянсовцу удается освободиться, но его быстро останавливают, а Джейк Райли стреляет беглецу в плечо. Харди отправляют в камеру к Софии Огден, пока не будет известно, что с ним предпринять, и ради его же безопасности, ведь Свора жаждет крови.
[11.02.2024] Новые обстоятельства
Участники: Cesare Argento, Katherine Grace, Veronica Lynch
Тентонн Хаммер умирает у ворот Своры, в присутствии «псов» и Вероники Линч. При осмотре тела в руке покойного Кэтрин Грэйс находит золотой крестик и забирает его себе, еще не догадываясь, что этот атрибут является флешкой, с оставленным на нем посланием от, ныне покойного, лидера Альянса. Вскоре со своей свитой является Чейз Аргенто, вместе с Кэт им придется решить, как сохранить мир между фракциями.
[13.03.2024]oh be careful little eyes what you see
Накануне одной из рабынь Своры удалось сбежать за периметр поселения. Никто не знает, удалось ли ей сделать это в самоволку, или кто-то проявил элементарное сострадание, но в ходе побега беглянка была тяжело ранена. Отпускать ее просто так никто, естественно, не собирается. На ее поиски было отправлено несколько групп по два человека. Jessie Riley и Jake Riley берут направление в сторону кладбища Сейнт Джон. Девушку они находят. Точнее, находят то, что от нее осталось. Место происшествия больше напоминает ритуальную песочницу. Словно до кладбища добралась компания отбитых на голову сатанистов. Но судя по найденным в округе запискам, что исписаны не иначе как латынью, и весьма незатейливому "инвентарю", ребята тут работали посерьезней нежели пара съехавших с катушек наркоманов. Двум случайно заплутавшим сюда путникам приходится максимально незаметно (на сколько позволяет ситуация) отойти с чужой территории. Им нужно донести информацию до поселения. Желательно целыми.
[26.03.2024] Походу, все, приехали
Участники: Katherine Grace, Lionel Diaz, Alistair Baker, Reed Ward
Цистерна для топлива - дивный новый мир торговых отношений, возможность перевозить, хранить и использовать больший запас бензина, а также разведать отдаленные базы на предмет вывоза топлива из резервуаров на окрестных хранилищах. Когда появляется надежда заполучить одну такую большую машину с прицепом в свой автопарк, отчаянные выживальщики из "Своры" решают рискнуть. Дополнительно это шанс чуть-чуть разведать ранее никем не тронутую зону аэропорта "Ла Гуардия" и, возможно, поживиться еще чем-то. Остается только разобраться с незначительными (или нет?) проблемами вроде зомби и других потенциальных рисков, которые могут встретиться в ходе безумной операции.
[08.04.2024] Крыса
Участники: David Moore, Grey Lake, Domino Osborne, Alistair Baker
В Своре завелась крыса, и аккурат в ночь, когда основные силы поселения отправилась на рейд, кто-то открыл ворота и запустил на территорию мертвецов. “Псы”, оставшиеся на базе, справляются с нашествием зомби и разыскивают предателя.
[03.06.2024] А что ты знаешь о безумии?
Участники: Nacon Green, Katherine Grace
Первая встреча Кэтрин с братом – Нэйконом Грином. Первое появление психов в Своре.
[08.06.2024]i refuse
Участники: Domino Osborne, Katherine Grace
Домино Осборн со своей маленькой спутницей Саммер Эймс решает покинуть Свору. До сегодняшнего дня не было прецедентов, чтобы кто-то вышел из состава поселения и не был объявлен дезертиром и предателем. Но Домино не устраивает быть дезертиром и предателем. Осборн не хочет, чтобы ему с девочкой стреляли в спину и преследовали. Снайпер является к альфе Кэтрин Грэйс и просит отпустить их. Впервые за более чем год существования Своры Кэтрин разрешает кому-то уйти подобру-поздорову. Разумеется, небесплатно.
[16.07.2024]счастье в мелочах
Участники: Benjamin Rostair, Katherine Grace
Свора полнится зверьем, но на этот раз Бенджамин приводит на базу лошадь. Несмотря на негативный настрой Кэтрин, охотнику удается убедить альфу в том, что кобыла может оказаться им полезной
[18.07.2024] A bad head
Участники: Benjamin Rostair, Olivia Barton
Бенджамин с Оливией отправляются за машиной первого, чтобы вернуть её на базу Своры, ведь охотник пересел на лошадь. Вылазка, которая должна была закончится быстро и просто оборачивается вылазкой за медикаментами в почти не тронутую с начала всего этого безобразия аптеку. Увы и ах всё не так просто и желающие добыть медикаменты были и помимо Оливии с Бенджамином. Стычка с залётными мародёрами едва не закончилась гибелью своровцев. Но по итогу они доставили на базу Своры и медикаменты и пару "новых" машин. Машину Бенджамина они так и не вернули на базу. В следующий раз точно получится.

[27.07.2024]Переезд Альянса в Свору
Утром в Альянсе произошло повреждение реактора и, как следствие, утечка радиации. Альянс вынужден оперативно переселиться в Свору, пока специалисты занимаются ремонтными работами. Свора не была предупреждена о визите, и с недовольством принимает людей, которые прибывают на их базу в течение дня. Людям приходится ютиться, мест катастрофически не хватает, принято решение разместить большую часть Альянса в соседнем здании, которое до этого не было предназначено для проживания. Договоренности: за предоставление мест, элементов быта (которые Альянс не смог все забрать с собой), защиты, в виде укрепленного ограждения, Альянс обязуется 3 следующих месяца бесплатно поставлять электричество в район Своры, и предоставить в дар оружие и патроны. Добыча пищи, в большей мере, теперь так же ложится на плечи Альянса, пока они проживают на чужой территории.
[29.08.2024] Принцип Домино
Участники: Domino Osborne, Cesare Argento, Hardy Knight, Katherine Grace
К середине июля 2024 г. Домино Осборн наконец-то выследил того, кого называл своим кровным врагом. Головорезы Чезаре Аргенто, в прошлом консильери нью-йоркской мафиозной семьи Гаэтано, расправились с близняшками Лиз и Эми в 2016 г. Спустя восемь лет возмездие наконец-то настигнет Чезаре. В августе Домино открывает на него охоту, но совершает ошибку.

[07.10.2024] Если ничего не знаешь, ничего и не болит
Участники: Domino Osborne, Jamie McClane
Прибыв на ферму Green Village, Домино Осборн получает скорбное известие о том, что двенадцатилетняя Саммер Эймс, оставленная им здесь в июне ради безопасности самой девочки, погибла. Печальную новость сообщает Джейми МакКлейн.

[22.10.2024] sometimes we need to break
Участники: Wayne Castle, Daire Heany, Samuel Quinn, Dexter Slater, Domino Osborne, Jerry Morgan (нпс)
Ферма Дрейер подверглась нападению рейдеров Своры. В ходе него агрессоры разделились. Пятеро отправились на базу, чтобы доставить туда награбленное. Семеро оставшихся столкнулись с неизвестными, прибывшими сюда на защиту фермы. Этих людей порядка двадцати, и численное преимущество явно на их стороне. Волей-неволей рейдерам Своры пришлось отступить. Они понесли потери, а самое главное и неприятное — Кэтрин Грэйс, бессменная альфа поселения, захвачена в плен.
Итог: 2 погибших у Своры, Джерри ранен, Кэтрин взята в плен (и раненого добермана Бронкса забрали МТ), а Миротворцев - 3 погибших, Сэм и Адам ранены. Ферма сгорела из-за поджога Джерри.

[22.10.2024] В темнице сырой
Участники: Daire Heany, Katherine Grace
Кэтрин Грэйс попадает в плен к Миротворцам, о которых ей еще только предстоит узнать, и альфа не ждет от них ничего хорошего после того, как Свора уничтожила ферму Дрейер. Удастся ли договориться с новой фракцией Нью-Йорка, и какие методы используют для этого Миротворцы?
[26.10.2024] - Домино освобождает Грэйс из плена
[01.11.2024] - первые переговоры Своры и Миротворцев, выдача пленных миротворцев

▶ В Своре около 20 собак, включая необученных и щенков.
Все собаки проходят полный курс дрессировки, который проводит Грэйс, и в первую очередь обучаются обходиться без лая, поэтому на базе Своры чаще всего тихо, а на вылазках псы подают свой голос только по команде, когда нужно отвлечь зомби от группы и увести угрозу.
Взаимодействию с собаками обучаются и другие члены фракции, чаще всего те, кто возглавляют вылазки и рейды или те, кто умеют с псами ладить.
Практически все собаки в Своры охотно едят человечину и причиной тому – экономия провизии. Это не происходит на постоянной основе, но на рейды берут в основном собак голодных и не препятствуют их диким привычкам.

Собачьи вольеры:
- крытые, оборудованы из контейнеров (совместное и раздельное содержание)
- открытые, по периметру обтянуты сеткой

Доберманы Грэйс
https://upforme.ru/uploads/001c/0f/f1/3/492282.png
кобели, 4 года

Единственные, кто могут беспрепятственно перемещаться по всей территории Своры без ограничений. В вольерах не живут, проживают в комнате Кэтрин. Собаки, которые прошли курсы послушания и обороны, но рабочими никогда не были. Смело могут подойти к любому «старичку» Своры для близкого контакта, чаще всего их «жертвами» становятся автомеханики, которые много времени проводят на улице.
Бруклин – осторожный и внимательный. Может долго сидеть на одном месте, наблюдая за тем, что вы делаете. Своенравный, любитель скалить клыки.
Бронкс – характер более мягкий, в сравнении с Бруклином, пес любопытный и охотнее идет на контакт.

Фрост 
https://upforme.ru/uploads/001c/0f/f1/3/240202.png
кобель, 6 лет, малинуа; полицейская собака

С ним Грэйс работала до ЗА, работает и сейчас; натаскан на задержание, не каждого к себе подпустит близко, и руки к нему лучше не тянуть, однако, работать в команде со Сворой умеет. Фрост имеет высокую ценность, и если он кому-то оторвет руку, то виноват будет кто угодно, кроме него.

Рэм
https://upforme.ru/uploads/001c/0f/f1/3/113399.png
сука, 2 года, малинуа; полицейская собака

Способна участвовать в рейдах, слушается только того, с кем обучена работать. По натуре своей – еще щенок, любит бегать за мячами и научилась взбираться за ними на некоторые деревья. Если говорить про шило в жопе, то это про Рэм. Позволяет себя гладить, но лучше не наглеть.

Кида
https://upforme.ru/uploads/001c/0f/f1/3/48889.png
сука, 3 года, дворняга

Крупная активная дворняга, подобранная на улицах Нью-Йорка, достаточно умная и хорошо проходит обучение, но с головой беда, в момент может перещелкнуть что-то в мозгу и тогда берегите руки. Прошлое собаки неизвестно, вероятно, что психика ее нарушена и дает сбои. Пристрелить бы по-хорошему, но Кэт ее все еще жалеет и дает шанс, ведь на рейдах Кида отлично себя проявляет, а в других ситуациях ее лучше просто держать в наморднике.

Арчи
https://upforme.ru/uploads/001c/0f/f1/3/398552.png
кобель, 5 лет, волкодав

Самый крупный среди собак Своры, обладатель спокойного нрава и больше подходит для вылазок, чем для рейдов. Был псом Грэма - одного из своровских, который погиб в июне 2024 года. Пес все еще тоскует по хозяину, и в работе охотнее следует командам мужчин, чем женщин.

Брайс
https://upforme.ru/uploads/001c/0f/f1/3/345295.png
кобель, 8 месяцев, помесь ротвейлера

Брайсом назвал щенка его прежний владелец – маленький мальчик, которого Грэйс убила и забрала животное себе (26.03.24).  Теперь этот молодой и подающий надежды пес – член Своры.

Туз
https://upforme.ru/uploads/001c/0f/f1/164/274184.png
кобель, 2 года, помесь амстаффа

Еще один подающий надежды молодой пёс. В настоящее время осваивает процесс дрессировки. Из тех, кто сделает всё за еду и залижет до смерти, хотя сейчас уже не только. Игривый, смышлёный и, падла, хитрый, хоть и прикидывается порой простачком. Вышел к людям Своры на одной из вылазок в начале июля 2024-ого вместе со своим товарищем – Барком. Из одного они помета или нет – никто не знает, но дружба между этими двумя точно есть.
За авторством Christopher Morris

Барк
https://upforme.ru/uploads/001c/0f/f1/164/82836.png
кобель, 2 года, помесь амстаффа

Злая ебака, которую изначально назвали Барракудой, а после сократили до Брака, то есть, Барка. Достаточно своеволен, слушается с натяжкой, признаёт одного хозяина. Молчалив, угрюм и сообразителен настолько, чтобы не вгрызаться в кормящую руку, но зубы на всякий случай покажет. Не признает других собак, кроме Туза. Пристрелить бы по-хорошему, но как исполнительно он вгрызается в чужие глотки и как аккуратен в «тесном общении» с зомби – загляденье.
За авторством Christopher Morris

Людовик XIV
https://upforme.ru/uploads/001c/0f/f1/164/536466.png
кот, возраст неизвестен

Рыжий кот, которого кто-то (не будем показывать пальцами на Криса) прикормил, хотя поговаривают, что он завёлся здесь сам собой как некая изначальная сучность. Ходит по базе Своры, как у себя дома; был замечен с добычей в пасти в виде крыс, мышей, птиц и чьих-то носков. Характер: скверный, но достаточно вежливый. Любит драконить собак. Часто ошивается возле веткомнаты или пёсьих вольеров. При попытке погладить или схватить – убегает (может прописать болезненных лещей), однако иногда приходит сам к определённым людям и устраивает кототерапевтические нежности. На время. Но не больше времени, определяемого самим котом. Будьте бдительны.
За авторством Christopher Morris

Лаки Страйк
https://upforme.ru/uploads/001c/0f/f1/247/861054.png
кобель, около 4 лет; американский булли

Американский булли по кличке Лаки Страйк, но достаточно просто "счастливчика". Бодибилдер-недоросток, коренастая невысокая собака с тяжёлым весом, поэтому, несмотря на рост по коленочку, коленочку может разломать и вывернуть. Выглядит как булочка с корицей и на самом деле является таковой, но натренирован на охрану и бросается по команде. С людьми ладит лучше, чем с собаками. Ренуары притащили Лаки с какой-то древней вылазки, собаку выходили и приручили к жизни в Своре, они же постоянно проверяют, как у "счастливчика" дела.
За авторством Lars Renoir

Вито
https://i.ibb.co/Mk7DbvsS/1638086058-1-sobakovod-club-p-sobaki-chernaya-dlinnosherstnaya-nemetskay-1.jpg
кобель, около 5 лет, немецкая овчарка

Вито - кобель немецкой овчарки, найденный тощим и полуголодным летом 2023 в одном из домов, где охранял уже мертвого младенца. Марко потребовался почти месяц и немало еды, чтобы заслужить доверие и выманить из дома, но оно того стоило. Не меньше времени потребовалось на то, чтобы откормить до нормального состояния. Обладатель крепкой психики и живого ума, ориентирован на человека, вынослив, исполнителен, с развитыми охранными навыками. Одинаково хорошо показывает себя во время вылазок и рейдов.
За авторством Marco Rossi

...

...

Помимо вылазок и рейдов, которые нам нужны везде и всегда, есть то, что требуется особенно остро (не беря в расчет добычу еды, оружия и медикаментов, что нужно всем выжившим по умолчанию). Взятые из списка сюжеты советуются для отыгрыша в Хронологии.

ФАРМАЦЕВТИКА
Свора уже имеет лабораторию, где изготавливаются синтетические наркотики, и расширяет спектр своих возможностей, начиная производство лекарственных препаратов. Необходимо заняться поиском литературы по химии и фармакологии, добыче компонентов, на основе которых Свора сможет создавать лекарства (особенно актуален отыгрыш на лето-осень 2024)

СОБАКИ
Собаки на улицах Нью-Йорка встречаются все реже, но те из них, кто не стал жертвой зомби, Своре пригодятся. А может и нет. Тащите все, там разберемся, только учтите, что прививок от бешенства нет (отыгрыш на любое время)

АВАНПОСТ
Своре пора расширить свои границы и взять под контроль небольшую точку на карте (или несколько), которую мы укрепим, и которая будет выполнять, как роль временного укрытия при вылазках на дальние расстояния, так и роль усиленной разведывательной базы.  Расположение можем выбрать сообща, но здание должно быть высоким, а главная дорога и проезжающие/проходящие по ней должны хорошо просматриваться. Аванпост подходит для временного проживания там 5-10 человек, но может и пустовать (настоящее время)

...

Код:
[table layout=fixed width=100%]
[tr]
[td colspan=3 bgcolor=#191919] [align=center][color=silver][size=10]добро пожаловать в[/size]
[b][size=25][font=Journalism]« С В О Р У »[/font][/size][/color] [/b][/align][/td]
[/tr]
[tr]
[td bgcolor=#191919][align=center][img]https://upforme.ru/uploads/001c/0f/f1/9/450346.gif[/img][/align][/td]
[td bgcolor=#191919][align=center][img]https://upforme.ru/uploads/001c/0f/f1/9/587046.gif[/img][/align][/td]
[td bgcolor=#191919][align=center][img]https://upforme.ru/uploads/001c/0f/f1/9/95553.gif[/img][/align][/td]
[/tr]
[/table]

[tabtitle=about]О Своре[/tabtitle]
[tabtitle=pravila]Правила (запреты и наказания)[/tabtitle]
[tabtitle=inside]Внутреннее устройство базы[/tabtitle]
[tabtitle=hrono]Хронология[/tabtitle]
[tabtitle=dog]Собаки[/tabtitle]
[tabtitle=plan]Планы на развитие[/tabtitle]

[tab=about][tabdefault]
[align=center][img]https://upforme.ru/uploads/001c/0f/f1/3/78029.png[/img][/align]
[align=center]▶ [b]Численность:[/b] 60 человек, из них 50 - подготовленные бойцы.
▶ [b]Локация: [/b]Свора занимает здание полицейского участка (основное), здание школы и прилегающую территорию небольшого спортивного комплекса. Занимаемая площадь огорожена высоким и укрепленным забором.
В зданиях налажена система водоснабжения, используются установленные водонапорные башни и бойлеры для нагрева воды. 
▶ [b]Политика:[/b] Не стремятся к сотрудничеству с малыми группами, придерживаются захватнических взглядов, а не дипломатии, на переговоры идут крайне неохотно, и лишь при условии собственной выгоды.
[b][u]Альянс[/u][/b]
15.06.2023-28.08.2024 – нейтралитет, обмен товарами
29.08.2024-... – стрелять на поражение, пленных не брать 
[b][u]Миротворцы[/u][/b]
22.10.2024 - 26.10.2024 - конфликт 
12.11.2024 -... - нейтралитет, обмен товарами

[b]ОСНОВНЫЕ НАПРАВЛЕНИЯ:[/b]
✪ Предоставляются услуги наемников (охрана людей и территории, поисковые отряды, зачистка от зомби, массовые и точечные убийства);
✪ Работорговля (можно приобрести в свою группу человека ценной (и не очень) профессии);
✪ Имеется небольшая лаборатория, в которой производятся легкие и сильные наркотики, и лекарственные препараты;
✪ Обученные собаки (предупреждают о зомби, отвлекают, не используя при этом голос и не кусая зараженную плоть, если не было соответствующей команды)
✪ Медицина. Создание лекарственных препаратов в лаборатории (с сентября 2024)[/align] 




[/tab]

[tab=pravila]
[b]ЗАПРЕТЫ И НАКАЗАНИЯ:[/b]
✪ Убийство одного из членов Своры = смерть.
Чаще всего это медленное и прилюдное убийство, приговоренного могут избить до смерти, использовать любые средства для этого: огнестрел, ножи, биты, кастеты, плети или кулаки. Перед этим нарушитель может подвергаться мучительным пыткам.
Реже за убийство наказывают одними лишь физическими увечьями, после прилюдной экзекуции запирают в карцере от 3 дней до нескольких недель. Запрещено посещение нарушителя, никакой еды, только вода.
✪ Предательство. Предательству нет оправданий. Смерть.
✪ Воровство. Чаще всего «псы» разбираются между собой сами, если ценность краденного высока или это могло повлиять на благополучие всей Своры, решение принимает лидер.
✪ Насилие физическое и сексуальное – не приветствуется, и запрещено по отношению к людям важных профессий, будь они в Своре или в статусе пленных. Наказание определяется лидером
✪ Наказание за мелкие проступки определяют сами члены Своры.
✪ Уход из Своры без предупреждения будет расценен, как предательство. Если имеются веские причины для ухода – обговаривается с лидером в индивидуальном порядке, и ставятся в известность все значимые члены фракции.
[/tab]

[tab=inside]
[align=center][b]ПЛАНИРОВКА ОБЩИХ ПОМЕЩЕНИЙ (1-2)[/b][img]https://upforme.ru/uploads/001c/0f/f1/9/t994446.png[/img][/align]
[align=center][b]ПЛАНИРОВКА ЖИЛЫХ ЭТАЖЕЙ (3-4 ...)[/b]
[size=10]Любой Своровец может выбрать себе свободную комнату или подселиться к кому-то из игроков. Внутреннее наполнение комнаты можно поменять по требованию, и можно переселиться (если достали соседи)[/align][/size]
[table layout=fixed width=100%]
[tr]
[td][b][align=center]3 этаж[/align][/b]
[size=14]
[b]1[/b]   - Riona Powers
[b]2[/b]   
[b]3[/b]   - Dexter Slater
[b]4[/b]   - Marco Rossi
[b]5[/b]   - Katherine Grace
[b]6[/b]   - Domino Osborne, James White
[b]7[/b]   - Antoinette Moon
[b]8[/b]   - Katherine Grace (кабинет)
[b]9[/b]   - Jane MacLeod (нпс)
[b]10[/b] - Olivia Barton
[b]11[/b] - Correy Sullivan[/size]

[b][align=center]4 этаж[/align][/b]

[size=14][b]12[/b] - 
[b]13[/b] - 
[b]14[/b] - 
[b]15[/b] -
[b]16[/b] - Lars Renoir, Melissa Renoir 
[b]17[/b] - Jason Bright, Barbara Valley
[b]18[/b] - Gabriela Garcia, Beverley Butler 
[b]19[/b] -
[b]20[/b] -
[b]21[/b] - Mike Reynolds
[b]22[/b] - Adam Breaker[/size]
[/td]
[td][img]https://upforme.ru/uploads/001c/0f/f1/3/141356.png[/img][/td]
[/tr]
[/table]


[/tab]

[tab=hrono]
[b][05.03.2023][/b] – основание Своры (лидер – Артур Грэйс).
[b][20.03.2023][/b] – первые переговоры с Альянсом (итог отрицательный).
[b][03.06.2023][/b] – смерть Артура, новый лидер Своры – Кэтрин Грэйс.
[b][15.06.2023][/b] – вторые переговоры с Альянсом ( итог положительный; условия: наркотики, дети-рабы, одна обученная собака (вторая через пол года, если договоренности не будут нарушены) => [url=https://pulseofny.rusff.me/viewtopic.php?id=68#p3449][15.06.2023] Энергетический кризис[/url]
[b][25.01.2024][/b][url=https://pulseofny.rusff.me/viewtopic.php?id=72#p13174]Отпуск в январе[/url]
Amanda Myers (еще будучи в Своре) убивает на вылазке Саймона Рочестора - одного из своих, бывшего заключенного со скверным характером, которого не все в Своре долюбливали (как и его брата – Дилана Рочестора). После совершения преступления девушка бежит, желая добраться до Альянса и найти там свое спасение.
Кэтрин Грэйс отправляет на поиски Аманды Jake Riley и Tyler Hadley, с приказом убить или доставить на базу для показательной казни. Но планы мужчин вынужденно меняются, когда на защиту девушки встает неизвестный (разведчик Альянса – Hardy Knight), ранит Тайлера в ногу, а Аманду забирает с собой.
[b][10.02.2024][/b]
Tyler Hadley желает найти того, кто помешал ему и Джейку Райли выполнить приказ Грэйс (убить Аманду) и ранил его самого. Он подозревает, что неизвестный может быть из Альянса, с группой ребят из Своры выслеживает Hardy Knight, но появившийся Альянс портит операцию, и в начавшейся перестрелке Тайлер и несколько ребят оказываются под обстрелом. Найта доставляют в Свору, как и было запланировано, а Тайлер захвачен Альянсом.
В перестрелке пострадали обе стороны, есть погибшие.
[b][10.02.2024][/b] [url=https://pulseofny.rusff.me/viewtopic.php?id=229]Кровь за кровь[/url]
Участники: Hardy Knight, Jake Rob Riley, Katherine Grace
В Своре зреет недовольство. Тайлер Хэдли у Альянса, двое ребят погибли в перестрелке с ними, а Кэтрин Грэйс против того, что бы пленного Харди Найта казнили. Во время переговоров лидер Своры ранит Найта ножом в бедро. Альянсовцу удается освободиться, но его быстро останавливают, а Джейк Райли стреляет беглецу в плечо. Харди отправляют в камеру к Софии Огден, пока не будет известно, что с ним предпринять, и ради его же безопасности, ведь Свора жаждет крови.
[b][11.02.2024][/b] [url=https://pulseofny.rusff.me/viewtopic.php?id=384]Новые обстоятельства[/url]
Участники: Cesare Argento, Katherine Grace, Veronica Lynch
Тентонн Хаммер умирает у ворот Своры, в присутствии «псов» и Вероники Линч. При осмотре тела в руке покойного Кэтрин Грэйс находит золотой крестик и забирает его себе, еще не догадываясь, что этот атрибут является флешкой, с оставленным на нем посланием от, ныне покойного, лидера Альянса. Вскоре со своей свитой является Чейз Аргенто, вместе с Кэт им придется решить, как сохранить мир между фракциями.
[b][13.03.2024][/b][url=https://pulseofny.rusff.me/viewtopic.php?id=174#p18532]oh be careful little eyes what you see[/url]
Накануне одной из рабынь Своры удалось сбежать за периметр поселения. Никто не знает, удалось ли ей сделать это в самоволку, или кто-то проявил элементарное сострадание, но в ходе побега беглянка была тяжело ранена. Отпускать ее просто так никто, естественно, не собирается. На ее поиски было отправлено несколько групп по два человека. Jessie Riley и Jake Riley берут направление в сторону кладбища Сейнт Джон. Девушку они находят. Точнее, находят то, что от нее осталось. Место происшествия больше напоминает ритуальную песочницу. Словно до кладбища добралась компания отбитых на голову сатанистов. Но судя по найденным в округе запискам, что исписаны не иначе как латынью, и весьма незатейливому "инвентарю", ребята тут работали посерьезней нежели пара съехавших с катушек наркоманов. Двум случайно заплутавшим сюда путникам приходится максимально незаметно (на сколько позволяет ситуация) отойти с чужой территории. Им нужно донести информацию до поселения. Желательно целыми.
[b][26.03.2024][/b] [url=https://pulseofny.rusff.me/viewtopic.php?id=463]Походу, все, приехали[/url]
Участники: Katherine Grace, Lionel Diaz, Alistair Baker, Reed Ward
Цистерна для топлива - дивный новый мир торговых отношений, возможность перевозить, хранить и использовать больший запас бензина, а также разведать отдаленные базы на предмет вывоза топлива из резервуаров на окрестных хранилищах. Когда появляется надежда заполучить одну такую большую машину с прицепом в свой автопарк, отчаянные выживальщики из "Своры" решают рискнуть. Дополнительно это шанс чуть-чуть разведать ранее никем не тронутую зону аэропорта "Ла Гуардия" и, возможно, поживиться еще чем-то. Остается только разобраться с незначительными (или нет?) проблемами вроде зомби и других потенциальных рисков, которые могут встретиться в ходе безумной операции.
[b][08.04.2024][/b] [url=https://pulseofny.rusff.me/viewtopic.php?id=387]Крыса[/url]
Участники: David Moore, Grey Lake, Domino Osborne, Alistair Baker
В Своре завелась крыса, и аккурат в ночь, когда основные силы поселения отправилась на рейд, кто-то открыл ворота и запустил на территорию мертвецов. “Псы”, оставшиеся на базе, справляются с нашествием зомби и разыскивают предателя.
[b][03.06.2024][/b] [url=https://pulseofny.rusff.me/viewtopic.php?id=496]А что ты знаешь о безумии?[/url]
Участники: Nacon Green, Katherine Grace
Первая встреча Кэтрин с братом – Нэйконом Грином. Первое появление психов в Своре.
[b][08.06.2024][/b][url=https://pulseofny.rusff.me/viewtopic.php?id=574]i refuse[/url]
Участники: Domino Osborne, Katherine Grace
Домино Осборн со своей маленькой спутницей Саммер Эймс решает покинуть Свору. До сегодняшнего дня не было прецедентов, чтобы кто-то вышел из состава поселения и не был объявлен дезертиром и предателем. Но Домино не устраивает быть дезертиром и предателем. Осборн не хочет, чтобы ему с девочкой стреляли в спину и преследовали. Снайпер является к альфе Кэтрин Грэйс и просит отпустить их. Впервые за более чем год существования Своры Кэтрин разрешает кому-то уйти подобру-поздорову. Разумеется, небесплатно.
[b][16.07.2024][/b][url=https://pulseofny.rusff.me/viewtopic.php?id=581]счастье в мелочах[/url]
Участники: Benjamin Rostair, Katherine Grace
Свора полнится зверьем, но на этот раз Бенджамин приводит на базу лошадь. Несмотря на негативный настрой Кэтрин, охотнику удается убедить альфу в том, что кобыла может оказаться им полезной
[b][18.07.2024][/b] [url=https://pulseofny.rusff.me/viewtopic.php?id=627]A bad head[/url]
Участники: Benjamin Rostair, Olivia Barton
Бенджамин с Оливией отправляются за машиной первого, чтобы вернуть её на базу Своры, ведь охотник пересел на лошадь. Вылазка, которая должна была закончится быстро и просто оборачивается вылазкой за медикаментами в почти не тронутую с начала всего этого безобразия аптеку. Увы и ах всё не так просто и желающие добыть медикаменты были и помимо Оливии с Бенджамином. Стычка с залётными мародёрами едва не закончилась гибелью своровцев. Но по итогу они доставили на базу Своры и медикаменты и пару "новых" машин. Машину Бенджамина они так и не вернули на базу. В следующий раз точно получится.

[b][27.07.2024][/b]Переезд Альянса в Свору
Утром в Альянсе произошло повреждение реактора и, как следствие, утечка радиации. Альянс вынужден оперативно переселиться в Свору, пока специалисты занимаются ремонтными работами. Свора не была предупреждена о визите, и с недовольством принимает людей, которые прибывают на их базу в течение дня. Людям приходится ютиться, мест катастрофически не хватает, принято решение разместить большую часть Альянса в соседнем здании, которое до этого не было предназначено для проживания. Договоренности: за предоставление мест, элементов быта (которые Альянс не смог все забрать с собой), защиты, в виде укрепленного ограждения, Альянс обязуется 3 следующих месяца бесплатно поставлять электричество в район Своры, и предоставить в дар оружие и патроны. Добыча пищи, в большей мере, теперь так же ложится на плечи Альянса, пока они проживают на чужой территории.
[b][29.08.2024][/b] [url=https://pulseofny.rusff.me/viewtopic.php?id=621]Принцип Домино[/url]
Участники: Domino Osborne, Cesare Argento, Hardy Knight, Katherine Grace
К середине июля 2024 г. Домино Осборн наконец-то выследил того, кого называл своим кровным врагом. Головорезы Чезаре Аргенто, в прошлом консильери нью-йоркской мафиозной семьи Гаэтано, расправились с близняшками Лиз и Эми в 2016 г. Спустя восемь лет возмездие наконец-то настигнет Чезаре. В августе Домино открывает на него охоту, но совершает ошибку.

[b][07.10.2024][/b] [url=https://pulseofny.rusff.me/viewtopic.php?id=712]Если ничего не знаешь, ничего и не болит[/url]
Участники: Domino Osborne, Jamie McClane
Прибыв на ферму Green Village, Домино Осборн получает скорбное известие о том, что двенадцатилетняя Саммер Эймс, оставленная им здесь в июне ради безопасности самой девочки, погибла. Печальную новость сообщает Джейми МакКлейн.

[b][22.10.2024][/b] [url=https://pulseofny.rusff.me/viewtopic.php?id=795]sometimes we need to break[/url]
Участники: Wayne Castle, Daire Heany, Samuel Quinn, Dexter Slater, Domino Osborne, Jerry Morgan (нпс)
Ферма Дрейер подверглась нападению рейдеров Своры. В ходе него агрессоры разделились. Пятеро отправились на базу, чтобы доставить туда награбленное. Семеро оставшихся столкнулись с неизвестными, прибывшими сюда на защиту фермы. Этих людей порядка двадцати, и численное преимущество явно на их стороне. Волей-неволей рейдерам Своры пришлось отступить. Они понесли потери, а самое главное и неприятное — Кэтрин Грэйс, бессменная альфа поселения, захвачена в плен.
[i]Итог: 2 погибших у Своры, Джерри ранен, Кэтрин взята в плен (и раненого добермана Бронкса забрали МТ), а Миротворцев - 3 погибших, Сэм и Адам ранены. Ферма сгорела из-за поджога Джерри[/i].

[b][22.10.2024][/b] [url=https://pulseofny.rusff.me/viewtopic.php?id=797]В темнице сырой[/url]
Участники: Daire Heany, Katherine Grace
Кэтрин Грэйс попадает в плен к Миротворцам, о которых ей еще только предстоит узнать, и альфа не ждет от них ничего хорошего после того, как Свора уничтожила ферму Дрейер. Удастся ли договориться с новой фракцией Нью-Йорка, и какие методы используют для этого Миротворцы?
[b][26.10.2024][/b] - Домино освобождает Грэйс из плена
[b][01.11.2024][/b] - первые переговоры Своры и Миротворцев, выдача пленных миротворцев

[/tab]

[tab=dog]▶ В Своре около 20 собак, включая необученных и щенков. 
Все собаки проходят полный курс дрессировки, который проводит Грэйс, и в первую очередь обучаются обходиться без лая, поэтому на базе Своры чаще всего тихо, а на вылазках псы подают свой голос только по команде, когда нужно отвлечь зомби от группы и увести угрозу. 
Взаимодействию с собаками обучаются и другие члены фракции, чаще всего те, кто возглавляют вылазки и рейды или те, кто умеют с псами ладить. 
Практически все собаки в Своры охотно едят человечину и причиной тому – экономия провизии. Это не происходит на постоянной основе, но на рейды берут в основном собак голодных и не препятствуют их диким привычкам. 


▶ [b][u]Собачьи вольеры:[/u][/b] 
- крытые, оборудованы из контейнеров (совместное и раздельное содержание)
- открытые, по периметру обтянуты сеткой

[table layout=fixed width=100%]
[tr]
[td][align=center][b]Доберманы Грэйс[/b] 
[img]https://upforme.ru/uploads/001c/0f/f1/3/492282.png[/img]
[i]кобели, 4 года[/i][/align][/td]
[td]Единственные, кто могут беспрепятственно перемещаться по всей территории Своры без ограничений. В вольерах не живут, проживают в комнате Кэтрин. Собаки, которые прошли курсы послушания и обороны, но рабочими никогда не были. Смело могут подойти к любому «старичку» Своры для близкого контакта, чаще всего их «жертвами» становятся автомеханики, которые много времени проводят на улице. 
[b]Бруклин[/b] – осторожный и внимательный. Может долго сидеть на одном месте, наблюдая за тем, что вы делаете. Своенравный, любитель скалить клыки.
[b]Бронкс[/b] – характер более мягкий, в сравнении с Бруклином, пес любопытный и охотнее идет на контакт. [/td]
[/tr]
[tr]
[td][align=center][b]Фрост[/b]  
[img]https://upforme.ru/uploads/001c/0f/f1/3/240202.png[/img]
[i]кобель, 6 лет, малинуа; полицейская собака[/i][/align]
[/td]
[td]С ним Грэйс работала до ЗА, работает и сейчас; натаскан на задержание, не каждого к себе подпустит близко, и руки к нему лучше не тянуть, однако, работать в команде со Сворой умеет. Фрост имеет высокую ценность, и если он кому-то оторвет руку, то виноват будет кто угодно, кроме него. [/td]
[/tr]
[tr]
[td][align=center][b]Рэм[/b]
[img]https://upforme.ru/uploads/001c/0f/f1/3/113399.png[/img]
[i]сука, 2 года, малинуа; полицейская собака[/i][/align]
[/td]
[td]Способна участвовать в рейдах, слушается только того, с кем обучена работать. По натуре своей – еще щенок, любит бегать за мячами и научилась взбираться за ними на некоторые деревья. Если говорить про шило в жопе, то это про Рэм. Позволяет себя гладить, но лучше не наглеть. [/td]
[/tr]

[tr]
[td][align=center][b]Кида[/b]
[img]https://upforme.ru/uploads/001c/0f/f1/3/48889.png[/img]
[i]сука, 3 года, дворняга[/i][/align]
[/td]
[td]Крупная активная дворняга, подобранная на улицах Нью-Йорка, достаточно умная и хорошо проходит обучение, но с головой беда, в момент может перещелкнуть что-то в мозгу и тогда берегите руки. Прошлое собаки неизвестно, вероятно, что психика ее нарушена и дает сбои. Пристрелить бы по-хорошему, но Кэт ее все еще жалеет и дает шанс, ведь на рейдах Кида отлично себя проявляет, а в других ситуациях ее лучше просто держать в наморднике. [/td]
[/tr]

[tr]
[td][align=center][b]Арчи[/b]
[img]https://upforme.ru/uploads/001c/0f/f1/3/398552.png[/img]
[i]кобель, 5 лет, волкодав[/i][/align]
[/td]
[td]Самый крупный среди собак Своры, обладатель спокойного нрава и больше подходит для вылазок, чем для рейдов. Был псом Грэма - одного из своровских, который погиб в июне 2024 года. Пес все еще тоскует по хозяину, и в работе охотнее следует командам мужчин, чем женщин. [/td]
[/tr]

[tr]
[td][align=center][b]Брайс[/b]
[img]https://upforme.ru/uploads/001c/0f/f1/3/345295.png[/img]
[i]кобель, 8 месяцев, помесь ротвейлера[/i][/align]
[/td]
[td]Брайсом назвал щенка его прежний владелец – маленький мальчик, которого Грэйс убила и забрала животное себе (26.03.24).  Теперь этот молодой и подающий надежды пес – член Своры.[/td]
[/tr]

[tr]
[td][align=center][b]Туз[/b]
[img]https://upforme.ru/uploads/001c/0f/f1/164/274184.png[/img]
[i]кобель, 2 года, помесь амстаффа[/i][/align]
[/td]
[td]Еще один подающий надежды молодой пёс. В настоящее время осваивает процесс дрессировки. Из тех, кто сделает всё за еду и залижет до смерти, хотя сейчас уже не только. Игривый, смышлёный и, падла, хитрый, хоть и прикидывается порой простачком. Вышел к людям Своры на одной из вылазок в начале июля 2024-ого вместе со своим товарищем – Барком. Из одного они помета или нет – никто не знает, но дружба между этими двумя точно есть.
[align=right]За авторством [url=https://pulseofny.rusff.me/profile.php?id=164]Christopher Morris[/url][/align][/td]
[/tr]

[tr]
[td][align=center][b]Барк[/b]
[img]https://upforme.ru/uploads/001c/0f/f1/164/82836.png[/img]
[i]кобель, 2 года, помесь амстаффа[/i][/align]
[/td]
[td]Злая ебака, которую изначально назвали Барракудой, а после сократили до Брака, то есть, Барка. Достаточно своеволен, слушается с натяжкой, признаёт одного хозяина. Молчалив, угрюм и сообразителен настолько, чтобы не вгрызаться в кормящую руку, но зубы на всякий случай покажет. Не признает других собак, кроме Туза. Пристрелить бы по-хорошему, но как исполнительно он вгрызается в чужие глотки и как аккуратен в «тесном общении» с зомби – загляденье.
[align=right]За авторством [url=https://pulseofny.rusff.me/profile.php?id=164]Christopher Morris[/url][/align][/td]
[/tr]

[tr]
[td][align=center][b]Людовик XIV[/b]
[img]https://upforme.ru/uploads/001c/0f/f1/164/536466.png[/img]
[i]кот, возраст неизвестен[/i][/align]
[/td]
[td]Рыжий кот, которого кто-то (не будем показывать пальцами на Криса) прикормил, хотя поговаривают, что он завёлся здесь сам собой как некая изначальная сучность. Ходит по базе Своры, как у себя дома; был замечен с добычей в пасти в виде крыс, мышей, птиц и чьих-то носков. Характер: скверный, но достаточно вежливый. Любит драконить собак. Часто ошивается возле веткомнаты или пёсьих вольеров. При попытке погладить или схватить – убегает (может прописать болезненных лещей), однако иногда приходит сам к определённым людям и устраивает кототерапевтические нежности. На время. Но не больше времени, определяемого самим котом. Будьте бдительны.
[align=right]За авторством [url=https://pulseofny.rusff.me/profile.php?id=164]Christopher Morris[/url][/align][/td]
[/tr]

[tr]
[td][align=center][b]Лаки Страйк[/b]
[img]https://upforme.ru/uploads/001c/0f/f1/247/861054.png[/img]
[i]кобель, около 4 лет; американский булли[/i][/align]
[/td]
[td]Американский булли по кличке Лаки Страйк, но достаточно просто "счастливчика". Бодибилдер-недоросток, коренастая невысокая собака с тяжёлым весом, поэтому, несмотря на рост по коленочку, коленочку может разломать и вывернуть. Выглядит как булочка с корицей и на самом деле является таковой, но натренирован на охрану и бросается по команде. С людьми ладит лучше, чем с собаками. Ренуары притащили Лаки с какой-то древней вылазки, собаку выходили и приручили к жизни в Своре, они же постоянно проверяют, как у "счастливчика" дела.
[align=right]За авторством [url=https://pulseofny.rusff.me/profile.php?id=247]Lars Renoir[/url][/align][/td]
[/tr]

[tr]
[td][align=center][b]Вито[/b]
[img]https://i.ibb.co/Mk7DbvsS/1638086058-1-sobakovod-club-p-sobaki-chernaya-dlinnosherstnaya-nemetskay-1.jpg[/img]
[i]кобель, около 5 лет, немецкая овчарка[/i][/align]
[/td]
[td]Вито - кобель немецкой овчарки, найденный тощим и полуголодным летом 2023 в одном из домов, где охранял уже мертвого младенца. Марко потребовался почти месяц и немало еды, чтобы заслужить доверие и выманить из дома, но оно того стоило. Не меньше времени потребовалось на то, чтобы откормить до нормального состояния. Обладатель крепкой психики и живого ума, ориентирован на человека, вынослив, исполнителен, с развитыми охранными навыками. Одинаково хорошо показывает себя во время вылазок и рейдов.
[align=right]За авторством [url=https://pulseofny.rusff.me/profile.php?id=319]Marco Rossi[/url][/align][/td]
[/tr]

[tr]
[td][align=center]...[/align][/td]
[td][align=center]...[/align][/td]
[/tr]
[/table]

[/tab]


[tab=plan][quote]Помимо вылазок и рейдов, которые нам нужны везде и всегда, есть то, что требуется особенно остро (не беря в расчет добычу еды, оружия и медикаментов, что нужно всем выжившим по умолчанию). Взятые из списка сюжеты советуются для отыгрыша в Хронологии. [/quote]

[b]ФАРМАЦЕВТИКА[/b]
Свора уже имеет лабораторию, где изготавливаются синтетические наркотики, и расширяет спектр своих возможностей, начиная производство лекарственных препаратов. Необходимо заняться поиском литературы по химии и фармакологии, добыче компонентов, на основе которых Свора сможет создавать лекарства (особенно актуален отыгрыш на лето-осень 2024)

[b]СОБАКИ[/b]
Собаки на улицах Нью-Йорка встречаются все реже, но те из них, кто не стал жертвой зомби, Своре пригодятся. А может и нет. Тащите все, там разберемся, только учтите, что прививок от бешенства нет (отыгрыш на любое время)

[b]АВАНПОСТ[/b]
Своре пора расширить свои границы и взять под контроль небольшую точку на карте (или несколько), которую мы укрепим, и которая будет выполнять, как роль временного укрытия при вылазках на дальние расстояния, так и роль усиленной разведывательной базы.  Расположение можем выбрать сообща, но здание должно быть высоким, а главная дорога и проезжающие/проходящие по ней должны хорошо просматриваться. Аванпост подходит для временного проживания там 5-10 человек, но может и пустовать (настоящее время)

[b]...[/b]
[/tab]

0

3

[hideprofile]

ЗАНЯТЫЕ ВНЕШНОСТИ

МУЖСКИЕ

ЖЕНСКИЕ

« A B C D E F »

• Aidan Gallagher - Nathaniel Lester
• Boyd Holbrook - Tyler Hadley
• Charlie Hunnam - Brian Kinney
• Chris Wood - Jake Riley
• Edgar Ramirez - Dean Bedworth
• Edward Furlong - Roman Shepard

• Abigail Breslin - Ajno Nyolc
• Alice Pagani - Alice Carter
• Alycia Debnam-Carey - Cassidy Hawk
• Amaia Aberasturi - Kristina Vance
• Dakota johnson - deborah moore
• Eiza gonzalez - Brandy Rice

« G H I J K L »

• Haftor Bjernsson - Hardy Knight
• Jack Quaid - peter abercrombie
• Jack O'Connell - Dan Dixon
• Jake Gyllenhaal - Wayne Hayes
• Jeffrey Dean Morgan - Solomon Right
• Jensen Ackles - Boyd Anderson
• Joel Kinnaman - nicholas burton

• Jessica Rothe - Amanda Myers
• Jodelle Ferland - Charly Brown
• Lena Headey - Katherine Grace

« M N O P Q R S »

• Michael McElhatton - Padraig Kelly
• Mike Ness - Frank Lynch
• Mike Vogel - Matthew Homer
• Ray Stevenson - Doug Campbell
• Robert Knepper - Tentonn Hammer
• Robert Sheehan - Alistair Baker
• Ryan Reynolds - Andrew Lynch

• Najwa Nimri - Pilar Sierra
• Natacha Karam - Marjan Marwani
• Olivia Cooke - Ruby Dixon
• Penny Mathis - Alexis Kane
• Rachael Taylor - Sydney Reed
• Sydney Sweeney - Nell Bedworth

« T U V W X Y Z »

• Timothee Chalamet - Jessie Riley
• Tomer capon - Kito Ortega

• Tasya Teles - Mary Drummer
• Vanessa Kirby - Tessa Farrell
• Vincent von thien - cain richter

0

4

если бы я знала, что это такое ><
https://forumstatic.ru/files/001c/80/ee/21969.gif https://forumstatic.ru/files/001c/80/ee/16965.gif https://forumstatic.ru/files/001c/80/ee/37257.gif https://forumstatic.ru/files/001c/80/ee/56686.png
https://forumstatic.ru/files/001c/80/ee/61011.gif
https://forumstatic.ru/files/001c/80/ee/69348.gif https://forumstatic.ru/files/001c/80/ee/29596.gif
https://forumstatic.ru/files/001c/80/ee/42653.png https://forumstatic.ru/files/001c/80/ee/87281.gif https://forumstatic.ru/files/001c/80/ee/52910.gif https://forumstatic.ru/files/001c/80/ee/82390.gif https://forumstatic.ru/files/001c/80/ee/99129.gif

+1

5

[hideprofile]

https://forumstatic.ru/files/0012/8f/f4/55082.svg Рейтинг: NC-21

Вы на волне радио "Пульс", выжившие Нью-Йорка!

PULSE

https://forumstatic.ru/files/0012/8f/f4/17048.svg Сеттинг: зомби- апокалипсис

C вами неудачник, застрявший на радиостанции посреди полуразрушенного Манхэттена, стабильно в эфире уже как год — с самого начала зомби-апокалипсиса!

Располагайтесь удобнее, у нас есть: ходячие мертвецы, заканчивающиеся ресурсы, разбомбленные электростанции и даже столкнувшиеся друг с другом крейсеры.

Согласно прогнозу синоптиков, направление толпы зомби северо-западное, возможны осадки в виде коктейлей Молотова, сброшенных с Эмпайр-стейт-билдинг. Но не паникуйте — мы все и так уже заражены вирусом, вопрос лишь в том, как скоро вы присоединитесь к ходячим трупам!

Будьте осторожны, объединяйтесь с одним из поселений или испытайте свои силы, выживая в одиночку. Не стесняйтесь найти себе компанию в радио-программе “Хочу к вам”, вернуть свою потерянную личность в “Нужных” или обратиться за помощью в этой теме.

https://forumstatic.ru/files/0012/8f/f4/22639.svg Локация: США, Нью-Йорк

https://forumstatic.ru/files/0012/8f/f4/46783.svg Время: Наши дни

https://forumstatic.ru/files/0012/8f/f4/21870.svg Система:
эпизодическая

ПРИДЕРЖАТЬ НА 3 ДНЯ
Код:
[block=subject_info_element1]имя внехи - до какого числа » [b]за кем[/b][/block]
ДЕРЖИМ ЗА ГОСТЯМИ

имя внехи - до какого числа » за кем

имя внехи - до какого числа » за кем

имя внехи - до какого числа » за кем

имя внехи - до какого числа » за кем

имя внехи - до какого числа » за кем

0

6

[dice=7744-3872-11616-1936-7744-5:6:0:]

0

7

[signed-dice data="eyJudW1zIjpbNzIsMTksMTUsNzQsNjUsMyw0MCwzOSwyMiwyOF0sInRvdGFsIjo4MCwidHMiOjE3NjA1MjQ1MTY1MjJ9" sig="1XUW-rYAMEBhX8RABpsQqd9TYPHM55JLYRtsX2pUZyw"]

0

8

лото кубики

Код:
--------------лото------------
<script>
(async function() {
  const SECRET = 'X4xN5uY8d7Wc2HqzL1tR9aJ0mVfG6sP3eBzQyTnKcUvD8pAoFjRrSxMwZbEhLgC';

  const utf8 = str => new TextEncoder().encode(str);
  const base64url = bytes => btoa(String.fromCharCode(...bytes)).replace(/\+/g,'-').replace(/\//g,'_').replace(/=+$/,'');
  const sha256 = async str => new Uint8Array(await crypto.subtle.digest('SHA-256', utf8(str)));
  const sign = async payload => base64url(await sha256(SECRET + '|' + payload));
  const escapeHTML = s => s.replace(/[&<>"']/g, m => ({'&':'&','<':'<','>':'>','"':'"',"'":'''}[m]));

  async function decodeDiceBlocks(context=document) {
    const posts = context.querySelectorAll('.post, .postbody, .post-content, .postmsg, .msg-content');
    for (const post of posts) {
      const html = post.innerHTML;
      const regex = /\[signed-dice\s+data="([^"]+)"\s+sig="([^"]+)"\]/g;
      let newHTML = html, match;
      while ((match = regex.exec(html)) !== null) {
        const [full, data, sig] = match;
        try {
          const b64 = data.replace(/-/g,'+').replace(/_/g,'/');
          const json = decodeURIComponent(escape(atob(b64)));
          const check = await sign(json);
          const payload = JSON.parse(json);
          if (sig === check) {
            const nums = payload.nums.join(', ');
            const count = payload.nums.length;
            const total = payload.total;
            const box = `
              <div style="border:1px solid #ccc;padding:6px 10px;border-radius:6px;background:#fafafa;margin-top:4px;">
                🎲 <strong>Выпавшие числа (${count} из ${total}):</strong> ${escapeHTML(nums)}
              </div>`;
            newHTML = newHTML.replace(full, box);
          } else {
            newHTML = newHTML.replace(full, '<div style="color:red;">⚠️ Ошибка подписи — результат недействителен</div>');
          }
        } catch(e) {
          newHTML = newHTML.replace(match[0], '<div style="color:red;">⚠️ Ошибка при чтении результата</div>');
        }
      }
      if (newHTML !== html) post.innerHTML = newHTML;
    }
  }

  function addDiceButton() {
    const ta = document.querySelector('textarea#main-reply[name="req_message"]');
    const panel = document.querySelector('#form-buttons, .button-row, .button-container, .post-editor-buttons');
    if (!ta || !panel || document.getElementById('dice-btn')) return;

    const btn = document.createElement('input');
    btn.type = 'button';
    btn.id = 'dice-btn';
    btn.className = 'button'; // стандартный класс rusff
    btn.value = 'Кубики';
    btn.title = 'Добавить случайные числа (лотерея)';
    btn.style.marginLeft = '3px';
    btn.style.cursor = 'pointer';
    btn.style.padding = '2px 6px';
    btn.style.fontSize = '11px';

    btn.addEventListener('mouseover', () => btn.style.background = '#e5e5e5');
    btn.addEventListener('mouseout', () => btn.style.background = '');

    panel.appendChild(btn);

    function randUnique(total, draw) {
      const arr = Array.from({ length: total }, (_, i) => i + 1);
      for (let i = arr.length - 1; i > 0; i--) {
        const j = Math.floor(Math.random() * (i + 1));
        [arr[i], arr[j]] = [arr[j], arr[i]];
      }
      return arr.slice(0, draw);
    }

    btn.addEventListener('click', async () => {
      const total = parseInt(prompt('Введите общее количество чисел (например, 80):', '80'));
      if (isNaN(total) || total < 1) return alert('Введите положительное число.');

      const draw = parseInt(prompt(`Сколько чисел вытянуть из ${total}?`, '10'));
      if (isNaN(draw) || draw < 1 || draw > total) return alert(`Введите число от 1 до ${total}.`);

      const nums = randUnique(total, draw);
      const payload = { nums, total, ts: Date.now() };
      const json = JSON.stringify(payload);
      const data = base64url(utf8(json));
      const sig = await sign(json);
      const tag = `[signed-dice data="${data}" sig="${sig}"]`;

      ta.value = tag;
      ta.setAttribute('readonly', 'readonly');
      btn.disabled = true;
      btn.value = '✅ Зафиксировано';
      alert('Результат вставлен в сообщение.');
    });
  }

  document.addEventListener('DOMContentLoaded', () => {
    decodeDiceBlocks();
    addDiceButton();
  });

  new MutationObserver(() => decodeDiceBlocks()).observe(document.body, { subtree: true, childList: true });
})();
</script>

0

9

[html]<div id="slotMachine" style="width:90%; max-width:600px; background:#1c1b1b; color:#fff; border-radius:10px; padding:2%; text-align:center; font-family:Georgia; margin:2% auto; box-shadow:0 0 10px rgba(0,0,0,0.6); position:relative;">

  <!-- Ник и баланс -->
  <div style="position:absolute; top:8px; left:8px; font-size:0.9em; color:#ffdd8a; text-align:left;">
    👤 <span id="userName"></span><br>
    💰 <span id="userCoins"></span>
  </div>

  <b style="font-size:1.3em;">🎰 Слот-машина</b>

  <div style="margin-top:1%; font-size:0.9em; color:#d9c7a1;">
    ⏳ Новый спин через: <span id="timer" style="font-weight:bold; color:#ffdd8a;"></span>
  </div>

  <div style="display:flex; justify-content:center; gap:2%; margin:3% 0;">
    <div class="slotCell" id="slot1" style="flex:1; aspect-ratio:1; background:#000; border:0.3% solid #7c653f; border-radius:8px; display:flex; align-items:center; justify-content:center;"></div>
    <div class="slotCell" id="slot2" style="flex:1; aspect-ratio:1; background:#000; border:0.3% solid #7c653f; border-radius:8px; display:flex; align-items:center; justify-content:center;"></div>
    <div class="slotCell" id="slot3" style="flex:1; aspect-ratio:1; background:#000; border:0.3% solid #7c653f; border-radius:8px; display:flex; align-items:center; justify-content:center;"></div>
  </div>

  <button id="spinBtn" style="padding:1% 3%; cursor:pointer; background:#b8863b; color:#fff; border:0.3% solid #000; font-weight:bold; border-radius:6px; box-shadow:0 0 5px rgba(0,0,0,0.6);">
    Крутить 🎲
  </button>

  <div id="winDisplay" style="margin-top:12px; font-size:1.1em; font-weight:bold; color:#ffdd00; min-height:2.2em;"></div>

  <textarea id="resultCode" readonly style="width:97%; height:80px; margin-top:12px; background:#0f0f10; color:#ffddae; border-radius:6px; padding:1%; font-family:'Courier New', monospace; font-size:0.85em; white-space:pre-wrap; overflow:auto;"></textarea>

  <button onclick="copyResult()" style="margin-top:12px; background:#444; border:0.3% solid #aaa; padding:1% 2%; cursor:pointer; color:#fff; border-radius:6px;">
    📋 Копировать результат
  </button>
</div>

<style>
.winGlow { animation: glowPulse 1s infinite alternate; }
@keyframes glowPulse {
  from { text-shadow: 0 0 6px #ffd700; color:#fff2b8; }
  to   { text-shadow: 0 0 18px #ffd700, 0 0 36px #ffb700; color:#fff9db; }
}
</style>

<script>
/* Баланс и ник */
let userName = localStorage.getItem("slotUserName");
let userCoins = parseInt(localStorage.getItem("slotCoins") || "0");

if (!userName) {
  userName = prompt("Введите ваш ник:");
  if (!userName) userName = "Игрок";
  localStorage.setItem("slotUserName", userName);
}
document.getElementById("userName").textContent = userName;
document.getElementById("userCoins").textContent = userCoins;

/* Кулдаун */
const COOLDOWN_MINUTES = 0;
const CD = COOLDOWN_MINUTES * 60000;
const timer = document.getElementById("timer");
const spinBtn = document.getElementById("spinBtn");
function canSpin(){
  return Date.now() - (localStorage.getItem("slotLastSpin") || 0) >= CD;
}
function updateTimer(){
  let last = localStorage.getItem("slotLastSpin") || 0;
  let diff = CD - (Date.now() - last);
  if (diff <= 0) { timer.textContent="готово ✅"; spinBtn.disabled=false; return; }
  timer.textContent = Math.floor(diff/60000)+"м "+Math.floor((diff%60000)/1000)+"с";
}
setInterval(updateTimer,1000); updateTimer();

/* Символы */
const symbols = [
  "https://upforme.ru/uploads/001c/84/76/2/793146.png",
  "https://upforme.ru/uploads/001c/84/76/2/635838.png",
  "https://upforme.ru/uploads/001c/84/76/2/604915.png",
  "https://upforme.ru/uploads/001c/84/76/2/703897.png"
];

const ids = ["slot1","slot2","slot3"];

/* Спин */
spinBtn.onclick = function(){
  if(!canSpin()){ alert("Подождите!"); return; }

  let r = ids.map(()=> symbols[Math.floor(Math.random()*symbols.length)]);
  ids.forEach((id,i)=>document.getElementById(id).innerHTML=`<img src="${r[i]}" style="max-width:80%;max-height:80%;">`);
  localStorage.setItem("slotLastSpin", Date.now());
  spinBtn.disabled = true;

  let counts = {}; r.forEach(s=>counts[s]=(counts[s]||0)+1);
  let reward = 0, text="", color="#7c653f";

  if(Object.values(counts).includes(3)){
    reward = 100; text="🎉 Тройка — +100"; color="#ffd700";
  } else if(Object.values(counts).includes(2)){
    reward = 50; text="✨ Пара — +50"; color="#c0a060";
  } else if(r.includes(symbols[2]) && r.includes(symbols[3])){
    reward = 500; text="🔥 Комбо №3+№4 — +500"; color="#ff6a9a";
  } else {
    text="Попробуй еще"; color="#7c653f";
  }

  /* ✅ добавляем и сохраняем монеты */
  userCoins += reward;
  localStorage.setItem("slotCoins", userCoins);
  document.getElementById("userCoins").textContent = userCoins;

  winDisplay.innerHTML = reward>0? `<span class="winGlow">Победа!</span><br>${text}` : text;

  resultCode.value = `<div style="border:4px solid ${color}; padding:10px;">🎰 Результат | 🧑 ${userName} | 💰 ${reward}</div>`;
};

/* Копировать */
function copyResult(){
  resultCode.select();
  document.execCommand("copy");
  alert("Скопировано!");
}
</script>[/html]

0

10

[signed-dice data="eyJudW1zIjpbMTksMjUsNl0sInRvdGFsIjo4MCwidHMiOjE3NjA1Mzk4OTY3MDZ9" sig="3iQ73oiptxV8hQ8xdhL_cZD91wtx1PfPXrsAn1V0hbc"]

0

11

[html]<h3>🎲 Генератор ЗЛА</h3>
<button id="makeCard">Сгенерировать карточку</button>
<button id="copyCard" style="display:none;">📋 Скопировать код карточки</button>

<div id="preview" style="margin-top:15px;"></div>
<p id="message" style="color:green; font-weight:bold; display:none;"></p>

<!-- Скрытое текстовое поле для хранения и ручного копирования кода -->
<textarea id="hiddenCardCode" style="width:100%; height:150px; margin-top:15px; display:none; font-family:monospace; white-space:pre; word-wrap:normal; overflow-x:auto; resize:vertical; border:1px solid #ccc; padding:5px; box-sizing:border-box;" readonly></textarea>

<style>
/* Эти стили используются только на странице генератора для предпросмотра карточки.
   Для копирования на форумы генерируется HTML с инлайн-стилями. */
.lotto-card {
    display: inline-block;
    border: 4px solid #f39c12;
    border-radius: 10px;
    padding: 10px;
    background: linear-gradient(to bottom right, #fff3e0, #ffe0b2);
    box-shadow: 2px 2px 12px rgba(0,0,0,0.2);
    transition: transform 0.3s ease;
}

.lotto-card:hover {
    transform: scale(1.03);
}

.lotto-card table {
    border-collapse: collapse;
    text-align: center;
    font-family: 'Arial', sans-serif;
    font-weight: bold;
    font-size: 18px;
}

.lotto-card td {
    width: 40px;
    height: 40px;
    border: 1px solid #f39c12;
    border-radius: 5px;
    background-color: #fff8e1;
}

button {
    background: #f39c12;
    border: none;
    color: white;
    padding: 8px 14px;
    border-radius: 6px;
    cursor: pointer;
    font-weight: bold;
    transition: 0.3s;
    margin-right: 5px;
}

button:hover {
    background: #e67e22;
}
</style>

<script>
// Функция для генерации числовых данных карточки
function generateCardData() {
    let card = Array.from({length: 3}, () => Array(9).fill(''));
    let ranges = [[1,10],[11,20],[21,30],[31,40],[41,50],[51,60],[61,70],[71,80],[81,90]];

    for (let col = 0; col < 9; col++) {
        let nums = [];
        // Гарантируем 3 уникальных числа в каждом столбце
        while (nums.length < 3) {
            let n = Math.floor(Math.random() * (ranges[col][1] - ranges[col][0] + 1)) + ranges[col][0];
            if (!nums.includes(n)) {
                nums.push(n);
            }
        }
        nums.sort((a, b) => a - b); // Сортируем числа по возрастанию

        for (let row = 0; row < 3; row++) {
            card[row][col] = nums[row];
        }
    }

    // Удаляем по 4 числа из каждой строки (чтобы получить 5 пустых ячеек в каждой строке)
    for (let row = 0; row < 3; row++) {
        let indices = Array.from({length: 9}, (_, i) => i).sort(() => 0.5 - Math.random()); // Перемешиваем индексы столбцов
        for (let i = 0; i < 4; i++) { // Удаляем 4 числа
            card[row][indices[i]] = '';
        }
    }
    return card;
}

// Функция для генерации HTML с инлайн-стилями (для копирования на форумы)
function generateCardHtmlForCopy(cardData) {
    let html = '<div style="display:inline-block; border:4px solid #f39c12; border-radius:10px; padding:10px; background:linear-gradient(to bottom right, #fff3e0, #ffe0b2); box-shadow:2px 2px 12px rgba(0,0,0,0.2);">';
    html += '<table style="border-collapse:collapse; text-align:center; font-family:\'Arial\', sans-serif; font-weight:bold; font-size:18px;">';
    for (let row of cardData) {
        html += '<tr>';
        for (let num of row) {
            // Используем неразрывный пробел для пустых ячеек, чтобы сохранить их высоту
            html += `<td style="width:40px; height:40px; border:1px solid #f39c12; border-radius:5px; background-color:#fff8e1;">${num || ' '}</td>`;
        }
        html += '</tr>';
    }
    html += '</table></div>';
    return html;
}

// Функция для генерации HTML с использованием классов (для отображения на странице генератора)
function generateCardHtmlForDisplay(cardData) {
    let html = '<div class="lotto-card"><table>';
    for (let row of cardData) {
        html += '<tr>';
        for (let num of row) {
            html += `<td>${num || ' '}</td>`; // Используем неразрывный пробел для пустых ячеек
        }
        html += '</tr>';
    }
    html += '</table></div>';
    return html;
}

// Обработчик события для кнопки "Сгенерировать карточку"
document.getElementById('makeCard').addEventListener('click', function() {
    let cardData = generateCardData();
   
    // Отображаем карточку, используя определенные CSS-классы
    document.getElementById('preview').innerHTML = generateCardHtmlForDisplay(cardData);
   
    // Сохраняем HTML с инлайн-стилями в скрытом текстовом поле для копирования
    document.getElementById('hiddenCardCode').value = generateCardHtmlForCopy(cardData);
   
    document.getElementById('copyCard').style.display = 'inline-block';
    document.getElementById('message').style.display = 'none';
    document.getElementById('hiddenCardCode').style.display = 'none'; // Убеждаемся, что текстовое поле скрыто
});

// Функция для обработки инструкций по ручному копированию
function showManualCopyFallback(textToCopy, msgElement) {
    let textarea = document.getElementById('hiddenCardCode');
    textarea.value = textToCopy;
    textarea.style.display = 'block'; // Делаем текстовое поле видимым
    textarea.select(); // Выделяем его содержимое
    textarea.setSelectionRange(0, 99999); // Для мобильных устройств

    // Пытаемся использовать устаревшую команду execCommand для копирования
    try {
        let successful = document.execCommand('copy');
        if (successful) {
            msgElement.textContent = '✅ Код скопирован (возможно, через execCommand)!';
            msgElement.style.color = 'green';
            msgElement.style.display = 'block';
            setTimeout(() => {
                msgElement.style.display = 'none';
                textarea.style.display = 'none'; // Скрываем текстовое поле после успешного копирования
            }, 2500);
            return; // Выход, если копирование было успешным
        }
    } catch (err) {
        console.warn('execCommand copy failed:', err);
    }
   
    // Если Clipboard API и execCommand не сработали, предлагаем ручное копирование
    msgElement.textContent = '⚠️ Код не скопирован автоматически. Пожалуйста, скопируйте его вручную: Ctrl+C (Cmd+C).';
    msgElement.style.color = 'orange';
    msgElement.style.display = 'block';
    // Не скрываем текстовое поле автоматически для ручного копирования
}

// Обработчик события для кнопки "Скопировать код карточки"
document.getElementById('copyCard').addEventListener('click', function() {
    let textToCopy = document.getElementById('hiddenCardCode').value;
    let msg = document.getElementById('message');
    msg.style.display = 'none'; // Скрываем предыдущие сообщения

    // Пытаемся использовать современный Clipboard API
    if (navigator.clipboard && navigator.clipboard.writeText) {
        navigator.clipboard.writeText(textToCopy).then(() => {
            msg.textContent = '✅ Код карточки скопирован!';
            msg.style.color = 'green';
            msg.style.display = 'block';
            document.getElementById('hiddenCardCode').style.display = 'none'; // Убеждаемся, что текстовое поле скрыто
            setTimeout(() => msg.style.display = 'none', 2500);
        }).catch(err => {
            console.error('Failed to copy text using clipboard API:', err);
            // Фолбэк к инструкциям по ручному копированию, если API не сработало
            showManualCopyFallback(textToCopy, msg);
        });
    } else {
        // Фолбэк для старых браузеров или окружений без Clipboard API
        showManualCopyFallback(textToCopy, msg);
    }
});
</script>[/html]

0

12

[html]<h3>🎲 Генератор ЗЛА</h3>

<button id="makeCard"
onclick="(function(){
let card = Array.from({length:3},()=>Array(9).fill(''));
let ranges=[[1,10],[11,20],[21,30],[31,40],[41,50],[51,60],[61,70],[71,80],[81,90]];
for(let c=0;c<9;c++){let nums=[];
while(nums.length<3){let n=Math.floor(Math.random()*(ranges[c][1]-ranges[c][0]+1))+ranges[c][0];
if(!nums.includes(n))nums.push(n);}
nums.sort((a,b)=>a-b);
for(let r=0;r<3;r++)card[r][c]=nums[r];}
for(let r=0;r<3;r++){let idx=[...Array(9).keys()].sort(()=>Math.random()-0.5);
for(let i=0;i<4;i++)card[r][idx[i]]='';}
let html='<div style=&quot;display:inline-block;border:4px solid #f39c12;border-radius:10px;padding:10px;background:linear-gradient(to bottom right,#fff3e0,#ffe0b2);box-shadow:2px 2px 12px rgba(0,0,0,0.2);&quot;><table style=&quot;border-collapse:collapse;text-align:center;font-family:Arial,sans-serif;font-weight:bold;font-size:18px;&quot;>';
for(let row of card){html+='<tr>';
for(let num of row){html+=`<td style=&quot;width:40px;height:40px;border:1px solid #f39c12;border-radius:5px;background-color:#fff8e1;&quot;>${num||'&nbsp;'}</td>`;}
html+='</tr>';}
html+='</table></div>';
document.getElementById('preview').innerHTML=html;
document.getElementById('hiddenCardCode').value=html;
document.getElementById('copyCard').style.display='inline-block';
document.getElementById('hiddenCardCode').style.display='none';
document.getElementById('message').style.display='none';
})();">Сгенерировать карточку</button>

<button id="copyCard" style="display:none;"
onclick="(function(){
let text=document.getElementById('hiddenCardCode').value;
let msg=document.getElementById('message');
msg.style.display='none';
if(navigator.clipboard&&navigator.clipboard.writeText){
navigator.clipboard.writeText(text).then(()=>{
msg.textContent='✅ Код карточки скопирован!';
msg.style.color='green';msg.style.display='block';
document.getElementById('hiddenCardCode').style.display='none';
setTimeout(()=>msg.style.display='none',2500);
}).catch(()=>{
let ta=document.getElementById('hiddenCardCode');
ta.style.display='block';ta.select();
msg.textContent='⚠️ Скопируйте вручную: Ctrl+C';
msg.style.color='orange';msg.style.display='block';
});
}else{
let ta=document.getElementById('hiddenCardCode');
ta.style.display='block';ta.select();
msg.textContent='⚠️ Скопируйте вручную: Ctrl+C';
msg.style.color='orange';msg.style.display='block';
}
})();">📋 Скопировать код карточки</button>

<div id="preview" style="margin-top:15px;"></div>
<p id="message" style="color:green;font-weight:bold;display:none;"></p>

<textarea id="hiddenCardCode" style="width:100%;height:150px;margin-top:15px;display:none;font-family:monospace;white-space:pre;word-wrap:normal;overflow-x:auto;resize:vertical;border:1px solid #ccc;padding:5px;box-sizing:border-box;" readonly></textarea>[/html]

0

13

[html]<div id="tarotContainer"></div>

<script>
const yourID = 57; // Ваш ID
const allowedPlayers = [yourID]; // или "all" для всех
const drawIntervalHours = 0;   // Часы
const drawIntervalMinutes = 0; // Минуты

const tarotCards = [
  { name: "Башня", img: "https://upforme.ru/uploads/001c/84/76/2/735286.jpg", desc: "Резкие перемены. Разрушение старого ради нового." },
  { name: "Звезда", img: "https://upforme.ru/uploads/001c/84/76/2/735286.jpg", desc: "Надежда, вдохновение, свет впереди." },
  { name: "Солнце", img: "https://upforme.ru/uploads/001c/84/76/2/735286.jpg", desc: "Радость, успех и ясность в делах." },
  { name: "Луна", img: "https://upforme.ru/uploads/001c/84/76/2/735286.jpg", desc: "Интуиция, сны, тайные страхи и желания." },
  { name: "Мир", img: "https://upforme.ru/uploads/001c/84/76/2/735286.jpg", desc: "Завершение цикла, гармония и успех." }
];

// Создаем контейнер и кнопку
const container = document.getElementById('tarotContainer');
container.innerHTML = `
  <div style="width:100%;max-width:450px;margin:20px auto;padding:20px;border-radius:16px;
              background: radial-gradient(circle at top,#222 0%,#111 100%);
              box-shadow:0 0 20px rgba(0,0,0,0.7);text-align:center;color:#eee;font-family:'Trebuchet MS',sans-serif;">
    <h3 style="color:#c9b6ff;text-shadow:0 0 6px #9b7eff;">🌒 Твоя карта судьбы</h3>
    <button id="tarotButton" style="background:linear-gradient(90deg,#6b48ff,#3b2d80);
            color:white;border:none;padding:10px 20px;border-radius:10px;cursor:pointer;
            font-size:15px;transition:all 0.3s ease;box-shadow:0 0 10px rgba(155,126,255,0.4);">Вытянуть карту</button>
    <div id="tarotResult" style="margin-top:20px;font-size:14px;color:#ddd;
         background:rgba(0,0,0,0.4);border-radius:12px;padding:15px;
         box-shadow:inset 0 0 12px rgba(155,126,255,0.2);white-space:pre-line;position:relative;"></div>
  </div>
`;

const btn = document.getElementById('tarotButton');
const result = document.getElementById('tarotResult');
const userID = yourID;
const intervalMs = (drawIntervalHours*3600000)+(drawIntervalMinutes*60000);

// Проверка доступа
if(allowedPlayers !== "all" && !allowedPlayers.includes(userID)){
    btn.disabled = true;
    btn.textContent = "Нет доступа";
}else{
    const now = Date.now();
    const lastDraw = localStorage.getItem("tarotDrawTime_"+userID);
    const saved = localStorage.getItem("tarotCard_"+userID);

    if(lastDraw && now - lastDraw < intervalMs){
        btn.disabled = true;
        btn.textContent = "Карта уже вытянута";
        if(saved) result.innerHTML = saved;
        const remaining = intervalMs-(now-lastDraw);
        const remHours = Math.floor(remaining/3600000);
        const remMinutes = Math.ceil((remaining%3600000)/60000);
        result.innerHTML += `<br><small>Повторная попытка через ${remHours} ч. ${remMinutes} мин.</small>`;
    }

    btn.addEventListener('click',()=>{
        const random = tarotCards[Math.floor(Math.random()*tarotCards.length)];

        // Создаем эффект дыма/облака
        const smoke = document.createElement('div');
        smoke.style.position = 'absolute';
        smoke.style.top = '-20px';
        smoke.style.left = '50%';
        smoke.style.transform = 'translateX(-50%)';
        smoke.style.width = '280px';
        smoke.style.height = '280px';
        smoke.style.background = 'radial-gradient(circle, rgba(255,255,255,0.05) 0%, transparent 70%)';
        smoke.style.borderRadius = '50%';
        smoke.style.filter = 'blur(10px)';
        smoke.style.animation = 'smokeMove 3s ease-out forwards';
        result.appendChild(smoke);

        // CSS-анимация для дыма
        const style = document.createElement('style');
        style.innerHTML = `
        @keyframes smokeMove {
            0% { transform: translateX(-50%) translateY(20px) scale(0.5); opacity:0.8; }
            50% { transform: translateX(-50%) translateY(-20px) scale(0.8); opacity:0.5; }
            100% { transform: translateX(-50%) translateY(-60px) scale(1.1); opacity:0; }
        }`;
        document.head.appendChild(style);

        // HTML для отображения карты на экране с анимацией
        const cardHTML = `
<div style="text-align:center;margin:15px auto;padding:15px;border-radius:12px;
            background: rgba(255,255,255,0.07);box-shadow:0 0 12px rgba(155,126,255,0.3);
            width:260px;color:#eee;font-family:'Trebuchet MS',sans-serif;
            opacity:0;transform:scale(0.9) rotate(-3deg);
            animation: appearCard 1.5s ease forwards;">
  <b style="color:#cbbaff;">${random.name}</b><br>
  <img src="${random.img}" alt="${random.name}" style="width:200px;border-radius:8px;margin:8px 0;
       box-shadow:0 0 12px rgba(155,126,255,0.4);"><br>
  <i style="color:#ddd;">${random.desc}</i>
</div>

<style>
@keyframes appearCard{
  0% {opacity:0; transform:scale(0.6) rotate(-10deg); filter:blur(8px);}
  50% {opacity:0.7; transform:scale(1.05) rotate(3deg); filter:blur(2px);}
  100% {opacity:1; transform:scale(1) rotate(0deg); filter:blur(0);}
}
</style>
`;

        // HTML для вставки в сообщение — с тем же оформлением, без анимации
        const copyableHTML = `
<div style="text-align:center;margin:15px auto;padding:75px;border-radius:22px;
            background: rgba(0,0,0);box-shadow:0 0 12px rgba(155,126,255,0.3);
            width:260px;color:#eee;font-family:'Trebuchet MS',sans-serif;">
  <b style="color:#cbbaff;">${random.name}</b><br>
  <img src="${random.img}" alt="${random.name}" style="width:200px;border-radius:8px;margin:8px 0;
       box-shadow:0 0 12px rgba(155,126,255,0.4);"><br>
  <i style="color:#ddd;">${random.desc}</i>
</div>
`;

        result.innerHTML = `
${cardHTML}<br>
<b>HTML-код для вставки в сообщение:</b><br>
<textarea style="width:100%;height:160px;">${copyableHTML}</textarea>
`;

        localStorage.setItem("tarotDrawTime_"+userID, now);
        localStorage.setItem("tarotCard_"+userID, result.innerHTML);
        btn.disabled = true;
        btn.textContent = "Карта получена";
    });
}
</script>[/html]

0

14

[html]<div style="text-align:center;margin:15px auto;padding:15px;border-radius:12px;
            background: rgba(0,0,0);box-shadow:0 0 12px rgba(155,126,255,0.3);
            width:260px;color:#eee;font-family:'Trebuchet MS',sans-serif;">
  <b style="color:#cbbaff;">Башня</b><br>
  <img src="https://upforme.ru/uploads/001c/84/76/2/735286.jpg" alt="Башня" style="width:200px;border-radius:8px;margin:8px 0;
       box-shadow:0 0 12px rgba(155,126,255,0.4);"><br>
  <i style="color:#ddd;">Резкие перемены. Разрушение старого ради нового.</i>
</div>[/html]

0

15

[html]<div style="text-align:center;margin:15px auto;padding:75px;border-radius:22px;
            background: rgba(0,0,0);box-shadow:0 0 12px rgba(155,126,255,0.3);
            width:260px;color:#eee;font-family:'Trebuchet MS',sans-serif;">
  <b style="color:#cbbaff;">Башня</b><br>
  <img src="https://upforme.ru/uploads/001c/84/76/2/735286.jpg" alt="Башня" style="width:200px;border-radius:8px;margin:8px 0;
       box-shadow:0 0 12px rgba(155,126,255,0.4);"><br>
  <i style="color:#ddd;">Резкие перемены. Разрушение старого ради нового.</i>
</div>[/html]

0

16

🎴 Вытянуты карты из 1-гранной колоды

https://upforme.ru/uploads/001c/84/76/2/418385.png
🌙 Луна — тайны и сны.

https://upforme.ru/uploads/001c/84/76/2/221722.png
💀 Смерть — перемены, обновление.

https://upforme.ru/uploads/001c/84/76/2/221722.png
💀 Смерть — перемены, обновление.

https://upforme.ru/uploads/001c/84/76/2/256937.png
🏰 Башня — неожиданное потрясение.

https://upforme.ru/uploads/001c/84/76/2/418385.png
⭐ Звезда — вдохновение, вера.


[dice=5808-1:6:0:]

0

17

🎴 Вытянуты карты из 2-гранной колоды

https://upforme.ru/uploads/001c/84/76/2/221722.png
🌸 Императрица — забота, плодородие.


[dice=7744-1:6:0:]

0

18

🎴 Вытянуты карты из 1-гранной колоды

https://upforme.ru/uploads/001c/84/76/2/221722.png
🎭 Шут — новое начало, авантюра.


[dice=7744-1:6:0:]

0

19

[hideprofile]
[html]<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Галерея победителей конкурса рисования</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
        }
       
        body {
            background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
            color: #333;
            padding: 20px;
            min-height: 100vh;
        }
       
        .container {
            max-width: 1200px;
            margin: 0 auto;
        }
       
        header {
            text-align: center;
            margin-bottom: 40px;
            padding: 20px;
            background-color: rgba(255, 255, 255, 0.9);
            border-radius: 15px;
            box-shadow: 0 8px 20px rgba(0, 0, 0, 0.1);
        }
       
        h1 {
            color: #2c3e50;
            margin-bottom: 10px;
            font-size: 2.8rem;
            background: linear-gradient(90deg, #3498db, #8e44ad);
            -webkit-background-clip: text;
            background-clip: text;
            color: transparent;
        }
       
        .subtitle {
            color: #7f8c8d;
            font-size: 1.2rem;
            max-width: 800px;
            margin: 0 auto;
            line-height: 1.6;
        }
       
        .gallery {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
            gap: 25px;
            margin-bottom: 40px;
        }
       
        .gallery-item {
            background-color: white;
            border-radius: 12px;
            overflow: hidden;
            box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
            transition: transform 0.3s ease, box-shadow 0.3s ease;
            cursor: pointer;
        }
       
        .gallery-item:hover {
            transform: translateY(-10px);
            box-shadow: 0 15px 30px rgba(0, 0, 0, 0.15);
        }
       
        .gallery-img {
            width: 100%;
            height: 220px;
            object-fit: cover;
            display: block;
            transition: transform 0.5s ease;
        }
       
        .gallery-item:hover .gallery-img {
            transform: scale(1.05);
        }
       
        .author {
            padding: 18px 15px;
            text-align: center;
            background-color: #fff;
            border-top: 1px solid #eee;
        }
       
        .author-name {
            font-weight: 600;
            color: #2c3e50;
            font-size: 1.1rem;
        }
       
        .medal {
            display: inline-block;
            margin-right: 8px;
            color: #ffd700;
            font-size: 1.2rem;
        }
       
        .position {
            display: inline-block;
            background-color: #3498db;
            color: white;
            width: 26px;
            height: 26px;
            line-height: 26px;
            border-radius: 50%;
            text-align: center;
            margin-right: 8px;
            font-weight: bold;
            font-size: 0.9rem;
        }
       
        /* Модальное окно */
        .modal {
            display: none;
            position: fixed;
            z-index: 1000;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            background-color: rgba(0, 0, 0, 0.9);
            justify-content: center;
            align-items: center;
            animation: fadeIn 0.3s;
        }
       
        @keyframes fadeIn {
            from {opacity: 0;}
            to {opacity: 1;}
        }
       
        .modal-content {
            max-width: 90%;
            max-height: 90%;
            border-radius: 8px;
            box-shadow: 0 0 40px rgba(255, 255, 255, 0.1);
        }
       
        .modal-author {
            position: absolute;
            bottom: 30px;
            left: 0;
            width: 100%;
            text-align: center;
            color: white;
            font-size: 1.5rem;
            padding: 15px;
            background-color: rgba(0, 0, 0, 0.7);
        }
       
        .close {
            position: absolute;
            top: 20px;
            right: 30px;
            color: white;
            font-size: 40px;
            font-weight: bold;
            cursor: pointer;
            transition: color 0.3s;
        }
       
        .close:hover {
            color: #f1c40f;
        }
       
        .nav-btn {
            position: absolute;
            top: 50%;
            transform: translateY(-50%);
            color: white;
            font-size: 50px;
            cursor: pointer;
            padding: 10px 20px;
            user-select: none;
            transition: color 0.3s;
        }
       
        .nav-btn:hover {
            color: #f1c40f;
        }
       
        .prev {
            left: 20px;
        }
       
        .next {
            right: 20px;
        }
       
        .winner-info {
            display: flex;
            align-items: center;
            justify-content: center;
            margin-bottom: 5px;
        }
       
        footer {
            text-align: center;
            padding: 20px;
            color: #7f8c8d;
            font-size: 0.9rem;
            border-top: 1px solid #ddd;
            margin-top: 20px;
        }
       
        @media (max-width: 768px) {
            .gallery {
                grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
                gap: 20px;
            }
           
            h1 {
                font-size: 2.2rem;
            }
           
            .nav-btn {
                font-size: 35px;
            }
           
            .prev {
                left: 10px;
            }
           
            .next {
                right: 10px;
            }
        }
       
        @media (max-width: 480px) {
            .gallery {
                grid-template-columns: 1fr;
            }
           
            h1 {
                font-size: 1.8rem;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <header>
            <h1><i class="fas fa-palette"></i> Победители конкурса рисования</h1>
            <p class="subtitle">Работы 10 финалистов ежегодного конкурса "Искусство будущего". Нажмите на любую картину для увеличения. Для навигации используйте стрелки на клавиатуре или кнопки в режиме просмотра.</p>
        </header>
       
        <div class="gallery" id="gallery">
            <!-- Галерея будет заполнена JavaScript -->
        </div>
       
        <!-- Модальное окно для увеличенного просмотра -->
        <div class="modal" id="imageModal">
            <span class="close" id="closeModal">×</span>
            <div class="nav-btn prev" id="prevBtn">❮</div>
            <div class="nav-btn next" id="nextBtn">❯</div>
            <img class="modal-content" id="modalImage">
            <div class="modal-author" id="modalAuthor"></div>
        </div>
       
        <footer>
            <p>Конкурс "Искусство будущего" • Все работы защищены авторским правом • © 2023</p>
        </footer>
    </div>

    <script>
        // Массив данных о победителях
        const winners = [
            { id: 1, name: "Александра Иванова", title: "Рассвет над озером", position: 1, imageUrl: "https://images.unsplash.com/photo-1578662996442-48f60103fc96?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1000&q=80" },
            { id: 2, name: "Михаил Петров", title: "Городские огни", position: 2, imageUrl: "https://images.unsplash.com/photo-1543857778-c4a1a569e388?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1000&q=80" },
            { id: 3, name: "Елена Смирнова", title: "Лесная сказка", position: 3, imageUrl: "https://images.unsplash.com/photo-1578301978693-85fa9c0320b9?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1000&q=80" },
            { id: 4, name: "Дмитрий Козлов", title: "Морской бриз", position: 4, imageUrl: "https://images.unsplash.com/photo-1519681393784-d120267933ba?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1000&q=80" },
            { id: 5, name: "Ольга Новикова", title: "Весенний букет", position: 5, imageUrl: "https://images.unsplash.com/photo-1577023311546-cdc07a8454d9?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1000&q=80" },
            { id: 6, name: "Игорь Федоров", title: "Горные вершины", position: 6, imageUrl: "https://images.unsplash.com/photo-1506905925346-21bda4d32df4?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1000&q=80" },
            { id: 7, name: "Татьяна Морозова", title: "Осенний парк", position: 7, imageUrl: "https://images.unsplash.com/photo-1501854140801-50d01698950b?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1000&q=80" },
            { id: 8, name: "Антон Васильев", title: "Архитектура будущего", position: 8, imageUrl: "https://images.unsplash.com/photo-1487956382158-bb926046304a?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1000&q=80" },
            { id: 9, name: "Наталья Павлова", title: "Подводный мир", position: 9, imageUrl: "https://images.unsplash.com/photo-1544551763-46a013bb70d5?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1000&q=80" },
            { id: 10, name: "Сергей Соколов", title: "Зимняя сказка", position: 10, imageUrl: "https://images.unsplash.com/photo-1518495978942-83cdb633d6d6?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1000&q=80" }
        ];

        // Элементы DOM
        const galleryElement = document.getElementById('gallery');
        const modalElement = document.getElementById('imageModal');
        const modalImageElement = document.getElementById('modalImage');
        const modalAuthorElement = document.getElementById('modalAuthor');
        const closeModalElement = document.getElementById('closeModal');
        const prevBtnElement = document.getElementById('prevBtn');
        const nextBtnElement = document.getElementById('nextBtn');

        let currentImageIndex = 0;

        // Функция для создания галереи
        function createGallery() {
            winners.forEach((winner, index) => {
                const galleryItem = document.createElement('div');
                galleryItem.className = 'gallery-item';
                galleryItem.dataset.index = index;
               
                const positionClass = winner.position <= 3 ? 'medal' : 'position';
                const positionIcon = winner.position <= 3 ?
                    (winner.position === 1 ? '<i class="fas fa-medal"></i>' :
                     winner.position === 2 ? '<i class="fas fa-medal" style="color:#c0c0c0"></i>' :
                     '<i class="fas fa-medal" style="color:#cd7f32"></i>') :
                    `<span class="position">${winner.position}</span>`;
               
                galleryItem.innerHTML = `
                    <img src="${winner.imageUrl}" alt="${winner.title}" class="gallery-img">
                    <div class="author">
                        <div class="winner-info">
                            ${positionIcon}
                            <span class="author-name">${winner.name}</span>
                        </div>
                        <div style="color: #7f8c8d; font-size: 0.9rem; margin-top: 5px;">"${winner.title}"</div>
                    </div>
                `;
               
                galleryItem.addEventListener('click', () => openModal(index));
                galleryElement.appendChild(galleryItem);
            });
        }

        // Функция для открытия модального окна
        function openModal(index) {
            currentImageIndex = parseInt(index);
            updateModalContent();
            modalElement.style.display = 'flex';
            document.body.style.overflow = 'hidden'; // Блокируем скролл страницы
        }

        // Функция для обновления содержимого модального окна
        function updateModalContent() {
            const winner = winners[currentImageIndex];
            modalImageElement.src = winner.imageUrl;
            modalImageElement.alt = winner.title;
           
            const positionIcon = winner.position <= 3 ?
                (winner.position === 1 ? '<i class="fas fa-medal"></i>' :
                 winner.position === 2 ? '<i class="fas fa-medal" style="color:#c0c0c0"></i>' :
                 '<i class="fas fa-medal" style="color:#cd7f32"></i>') :
                `<span style="background-color: #3498db; color: white; padding: 5px 10px; border-radius: 4px; margin-right: 10px;">${winner.position} место</span>`;
           
            modalAuthorElement.innerHTML = `
                ${positionIcon}
                <strong>${winner.name}</strong> - "${winner.title}"
            `;
        }

        // Функция для закрытия модального окна
        function closeModal() {
            modalElement.style.display = 'none';
            document.body.style.overflow = 'auto'; // Восстанавливаем скролл страницы
        }

        // Функция для показа следующего изображения
        function showNextImage() {
            currentImageIndex = (currentImageIndex + 1) % winners.length;
            updateModalContent();
        }

        // Функция для показа предыдущего изображения
        function showPrevImage() {
            currentImageIndex = (currentImageIndex - 1 + winners.length) % winners.length;
            updateModalContent();
        }

        // Обработчики событий для навигации с клавиатуры
        document.addEventListener('keydown', (event) => {
            if (modalElement.style.display === 'flex') {
                if (event.key === 'Escape') {
                    closeModal();
                } else if (event.key === 'ArrowRight') {
                    showNextImage();
                } else if (event.key === 'ArrowLeft') {
                    showPrevImage();
                }
            }
        });

        // Назначаем обработчики событий
        closeModalElement.addEventListener('click', closeModal);
        prevBtnElement.addEventListener('click', showPrevImage);
        nextBtnElement.addEventListener('click', showNextImage);

        // Закрытие модального окна при клике вне изображения
        modalElement.addEventListener('click', (event) => {
            if (event.target === modalElement) {
                closeModal();
            }
        });

        // Инициализация галереи
        createGallery();
    </script>
</body>
</html>
[/html]

0

20

[hideprofile]

[html]<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Галерея победителей конкурса рисования</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
        }
       
        body {
            background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
            color: #333;
            padding: 20px;
            min-height: 100vh;
        }
       
        .container {
            max-width: 1600px;
            margin: 0 auto;
            padding: 0 20px;
        }
       
        header {
            text-align: center;
            margin-bottom: 40px;
            padding: 20px;
            background-color: rgba(255, 255, 255, 0.9);
            border-radius: 15px;
            box-shadow: 0 8px 20px rgba(0, 0, 0, 0.1);
        }
       
        h1 {
            color: #2c3e50;
            margin-bottom: 10px;
            font-size: 2.8rem;
            background: linear-gradient(90deg, #3498db, #8e44ad);
            -webkit-background-clip: text;
            background-clip: text;
            color: transparent;
        }
       
        .subtitle {
            color: #7f8c8d;
            font-size: 1.2rem;
            max-width: 800px;
            margin: 0 auto;
            line-height: 1.6;
        }
       
        .gallery {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 25px;
    margin-bottom: 40px;
}

       
        .gallery-item {
            background-color: white;
            border-radius: 12px;
            overflow: hidden;
            box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
            transition: transform 0.3s ease, box-shadow 0.3s ease;
            cursor: pointer;
            height: 100%;
            display: flex;
            flex-direction: column;
        }
       
        .gallery-item:hover {
            transform: translateY(-10px);
            box-shadow: 0 15px 30px rgba(0, 0, 0, 0.15);
        }
       
        .gallery-img {
            width: 100%;
            height: 220px;
            object-fit: cover;
            display: block;
            transition: transform 0.5s ease;
            flex-grow: 1;
        }
       
        .gallery-item:hover .gallery-img {
            transform: scale(1.05);
        }
       
        .author {
            padding: 18px 15px;
            text-align: center;
            background-color: #fff;
            border-top: 1px solid #eee;
            flex-shrink: 0;
        }
       
        .author-name {
            font-weight: 600;
            color: #2c3e50;
            font-size: 1.1rem;
        }
       
        .medal {
            display: inline-block;
            margin-right: 8px;
            color: #ffd700;
            font-size: 1.2rem;
        }
       
        .position {
            display: inline-block;
            background-color: #3498db;
            color: white;
            width: 26px;
            height: 26px;
            line-height: 26px;
            border-radius: 50%;
            text-align: center;
            margin-right: 8px;
            font-weight: bold;
            font-size: 0.9rem;
        }
       
        /* Модальное окно */
        .modal {
            display: none;
            position: fixed;
            z-index: 1000;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            background-color: rgba(0, 0, 0, 0.9);
            justify-content: center;
            align-items: center;
            animation: fadeIn 0.3s;
        }
       
        @keyframes fadeIn {
            from {opacity: 0;}
            to {opacity: 1;}
        }
       
        .modal-content {
            max-width: 90%;
            max-height: 90%;
            border-radius: 8px;
            box-shadow: 0 0 40px rgba(255, 255, 255, 0.1);
        }
       
        .modal-author {
            position: absolute;
            bottom: 30px;
            left: 0;
            width: 100%;
            text-align: center;
            color: white;
            font-size: 1.5rem;
            padding: 15px;
            background-color: rgba(0, 0, 0, 0.7);
        }
       
        .close {
            position: absolute;
            top: 20px;
            right: 30px;
            color: white;
            font-size: 40px;
            font-weight: bold;
            cursor: pointer;
            transition: color 0.3s;
        }
       
        .close:hover {
            color: #f1c40f;
        }
       
        .nav-btn {
            position: absolute;
            top: 50%;
            transform: translateY(-50%);
            color: white;
            font-size: 50px;
            cursor: pointer;
            padding: 10px 20px;
            user-select: none;
            transition: color 0.3s;
        }
       
        .nav-btn:hover {
            color: #f1c40f;
        }
       
        .prev {
            left: 20px;
        }
       
        .next {
            right: 20px;
        }
       
        .winner-info {
            display: flex;
            align-items: center;
            justify-content: center;
            margin-bottom: 5px;
        }
       
        footer {
            text-align: center;
            padding: 20px;
            color: #7f8c8d;
            font-size: 0.9rem;
            border-top: 1px solid #ddd;
            margin-top: 20px;
        }
       

           
            h1 {
                font-size: 2.2rem;
            }
           
            .nav-btn {
                font-size: 35px;
            }
           
            .prev {
                left: 10px;
            }
           
            .next {
                right: 10px;
            }
           
            .gallery-img {
                height: 200px;
            }
        }
       
        @media (max-width: 480px) {
            .gallery {
                grid-template-columns: 1fr;
            }
           
            h1 {
                font-size: 1.8rem;
            }
           
            .gallery-img {
                height: 180px;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <header>
            <h1><i class="fas fa-palette"></i> Итоги раскраски</h1>
            <p class="subtitle">Настало время увековечить всех участников нашей раскраски и одарить каждого денежным переводом на счет (ваши кошельки уже пополнены). Хоть у всех и была одна база для раскрашивания, но каждый внес в работу свое видение, свое настроение, от чего все рисунки получились индивидуальными, но при этом праздничными!
Всем спасибо за участие, любуйтесь результатами, наслаждайтесь, а картинки увеличиваются по клику.
</p>
        </header>
       
        <div class="gallery" id="gallery">
            <!-- Галерея будет заполнена JavaScript -->
        </div>
       
        <!-- Модальное окно для увеличенного просмотра -->
        <div class="modal" id="imageModal">
            <span class="close" id="closeModal">&times;</span>
            <div class="nav-btn prev" id="prevBtn">❮</div>
            <div class="nav-btn next" id="nextBtn">❯</div>
            <img class="modal-content" id="modalImage">
            <div class="modal-author" id="modalAuthor"></div>
        </div>
       
        <footer>
            <p>Конкурс "Новогодний зомби" • Все работы защищены авторским правом • © 2025</p>
        </footer>
    </div>

    <script>
        // Массив данных о победителях
        const winners = [
            { id: 1, name: "Hiram Crowe", title: "Бегу поздравить - волосы назад", position: 1, imageUrl: "https://upforme.ru/uploads/001c/84/76/2/594768.png" },
            { id: 2, name: "Anna Hartman", title: "Баня перед новым годом - только с еловым веником", position: 2, imageUrl: "https://upforme.ru/uploads/001c/84/76/2/501907.png" },
            { id: 3, name: "Ricky Wachowski", title: "Лучший праздник - с коллегами на работе", position: 3, imageUrl: "https://upforme.ru/uploads/001c/84/76/2/381989.png" },
            { id: 4, name: "Marco Rossi", title: "Мгновение перед чудом или Сладкоежка", position: 4, imageUrl: "https://upforme.ru/uploads/001c/84/76/2/465728.png" },
            { id: 5, name: "Kurt Dawson", title: "Где же эта новогодняя красавица?", position: 5, imageUrl: "https://upforme.ru/uploads/001c/84/76/2/442564.png" },
            { id: 6, name: "David Shaw", title: "Добряк Санта несет подарки детворе", position: 6, imageUrl: "https://upforme.ru/uploads/001c/84/76/2/272026.png" },
            { id: 7, name: "Dolores Kruger", title: "Веселый пакостник Гринч - похититель гирлянд и бенгальских огней", position: 7, imageUrl: "https://upforme.ru/uploads/001c/84/76/2/449614.png" },
            { id: 8, name: "Graham Chase", title: "Прекрасны олени Санты Клауса в ночной тиши", position: 8, imageUrl: "https://upforme.ru/uploads/001c/84/76/2/438870.png" },
            { id: 9, name: "Faye Connolly", title: "Звон рождественских колокольчиков", position: 9, imageUrl: "https://upforme.ru/uploads/001c/84/76/2/38605.png" },
            { id: 10, name: "Amanda Myers", title: "Мандариновая ночь в зимнем лесу", position: 10, imageUrl: "https://upforme.ru/uploads/001c/84/76/2/944355.png" }
        ];

        // Элементы DOM
        const galleryElement = document.getElementById('gallery');
        const modalElement = document.getElementById('imageModal');
        const modalImageElement = document.getElementById('modalImage');
        const modalAuthorElement = document.getElementById('modalAuthor');
        const closeModalElement = document.getElementById('closeModal');
        const prevBtnElement = document.getElementById('prevBtn');
        const nextBtnElement = document.getElementById('nextBtn');

        let currentImageIndex = 0;

        // Функция для создания галереи
        function createGallery() {
            winners.forEach((winner, index) => {
                const galleryItem = document.createElement('div');
                galleryItem.className = 'gallery-item';
                galleryItem.dataset.index = index;
               

                const positionClass = winner.position <= 3 ? 'medal' : 'position';
                const positionIcon = winner.position <= 3 ?
                    (winner.position === 1 ? '<i class="fas fa-medal"></i>' :
                     winner.position === 2 ? '<i class="fas fa-medal" style="color:#c0c0c0"></i>' :
                     '<i class="fas fa-medal" style="color:#cd7f32"></i>') :
                    `<span class="position">${winner.position}</span>`;
               
                galleryItem.innerHTML = `
                    <img src="${winner.imageUrl}" alt="${winner.title}" class="gallery-img">
                    <div class="author">
                        <div class="winner-info">
                            ${positionIcon}
                            <span class="author-name">${winner.name}</span>
                        </div>
                        <div style="color: #7f8c8d; font-size: 0.9rem; margin-top: 5px;">"${winner.title}"</div>
                    </div>
                `;
               
                galleryItem.addEventListener('click', () => openModal(index));
                galleryElement.appendChild(galleryItem);
            });
        }

        // Функция для открытия модального окна
        function openModal(index) {
            currentImageIndex = parseInt(index);
            updateModalContent();
            modalElement.style.display = 'flex';
            document.body.style.overflow = 'hidden'; // Блокируем скролл страницы
        }

        // Функция для обновления содержимого модального окна
        function updateModalContent() {
            const winner = winners[currentImageIndex];
            modalImageElement.src = winner.imageUrl;
            modalImageElement.alt = winner.title;
           
            const positionIcon = winner.position <= 3 ?
                (winner.position === 1 ? '<i class="fas fa-medal"></i>' :
                 winner.position === 2 ? '<i class="fas fa-medal" style="color:#c0c0c0"></i>' :
                 '<i class="fas fa-medal" style="color:#cd7f32"></i>') :
                `<span style="background-color: #3498db; color: white; padding: 5px 10px; border-radius: 4px; margin-right: 10px;">${winner.position} участник</span>`;
           
            modalAuthorElement.innerHTML = `
                ${positionIcon}
                <strong>${winner.name}</strong> - "${winner.title}"
            `;
        }

        // Функция для закрытия модального окна
        function closeModal() {
            modalElement.style.display = 'none';
            document.body.style.overflow = 'auto'; // Восстанавливаем скролл страницы
        }

        // Функция для показа следующего изображения
        function showNextImage() {
            currentImageIndex = (currentImageIndex + 1) % winners.length;
            updateModalContent();
        }

        // Функция для показа предыдущего изображения
        function showPrevImage() {
            currentImageIndex = (currentImageIndex - 1 + winners.length) % winners.length;
            updateModalContent();
        }

        // Обработчики событий для навигации с клавиатуры
        document.addEventListener('keydown', (event) => {
            if (modalElement.style.display === 'flex') {
                if (event.key === 'Escape') {
                    closeModal();
                } else if (event.key === 'ArrowRight') {
                    showNextImage();
                } else if (event.key === 'ArrowLeft') {
                    showPrevImage();
                }
            }
        });

        // Назначаем обработчики событий
        closeModalElement.addEventListener('click', closeModal);
        prevBtnElement.addEventListener('click', showPrevImage);
        nextBtnElement.addEventListener('click', showNextImage);

        // Закрытие модального окна при клике вне изображения
        modalElement.addEventListener('click', (event) => {
            if (event.target === modalElement) {
                closeModal();
            }
        });

        // Инициализация галереи
        createGallery();
    </script>
</body>
</html>[/html]

0

21

[hideprofile]

[html]<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Галерея победителей конкурса рисования</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
        }
       
        body {
            background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
            color: #333;
            padding: 20px;
            min-height: 100vh;
        }
       
        .container {
            max-width: 1600px;
            margin: 0 auto;
            padding: 0 20px;
        }
       
        header {
            text-align: center;
            margin-bottom: 40px;
            padding: 20px;
            background-color: rgba(30, 30, 30, 90%);
            border-radius: 0px;
            box-shadow: 0 8px 20px rgba(0, 0, 0, 0.1);
        }
       
        h1 {
            color: #2c3e50;
            margin-bottom: 10px;
            font-size: 2.8rem;
            background: linear-gradient(90deg, #3498db, #8e44ad);
            -webkit-background-clip: text;
            background-clip: text;
            color: transparent;
        }
       
        .subtitle {
            color: #7f8c8d;
            font-size: 1.2rem;
            max-width: 800px;
            margin: 0 auto;
            line-height: 1.6;
        }
       
        .gallery {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 25px;
    margin-bottom: 40px;
}

       
        .gallery-item {
            background-color: white;
            border-radius: 0px;
            overflow: hidden;
            box-shadow: 0 5px 15px rgba(70, 70, 70, 74%);
            transition: transform 0.3s ease, box-shadow 0.3s ease;
            cursor: pointer;
            height: 100%;
            display: flex;
            flex-direction: column;
        }
       
        .gallery-item:hover {
            transform: translateY(-10px);
            box-shadow: 0 15px 30px rgba(0, 0, 0, 0.15);
        }
       
        .gallery-img {
            width: 100%;
            height: 220px;
            object-fit: cover;
            display: block;
            transition: transform 0.5s ease;
            flex-grow: 1;
        }
       
        .gallery-item:hover .gallery-img {
            transform: scale(1.05);
        }
       
        .author {
            padding: 18px 15px;
            text-align: center;
            background-color: #fff;
            border-top: 1px solid #eee;
            flex-shrink: 0;
        }
       
        .author-name {
            font-weight: 600;
            color: #2c3e50;
            font-size: 1.1rem;
        }
       
        .medal {
            display: inline-block;
            margin-right: 8px;
            color: #ffd700;
            font-size: 1.2rem;
        }
       
        .position {
            display: inline-block;
            background-color: #3498db;
            color: white;
            width: 26px;
            height: 26px;
            line-height: 26px;
            border-radius: 50%;
            text-align: center;
            margin-right: 8px;
            font-weight: bold;
            font-size: 0.9rem;
        }
       
        /* Модальное окно */
        .modal {
            display: none;
            position: fixed;
            z-index: 1000;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            background-color: rgba(0, 0, 0, 0.9);
            justify-content: center;
            align-items: center;
            animation: fadeIn 0.3s;
        }
       
        @keyframes fadeIn {
            from {opacity: 0;}
            to {opacity: 1;}
        }
       
        .modal-content {
            max-width: 90%;
            max-height: 90%;
            border-radius: 8px;
            box-shadow: 0 0 40px rgba(255, 255, 255, 0.1);
        }
       
        .modal-author {
            position: absolute;
            bottom: 30px;
            left: 0;
            width: 100%;
            text-align: center;
            color: white;
            font-size: 1.5rem;
            padding: 15px;
            background-color: rgba(0, 0, 0, 0.7);
        }
       
        .close {
            position: absolute;
            top: 20px;
            right: 30px;
            color: white;
            font-size: 40px;
            font-weight: bold;
            cursor: pointer;
            transition: color 0.3s;
        }
       
        .close:hover {
            color: #f1c40f;
        }
       
        .nav-btn {
            position: absolute;
            top: 50%;
            transform: translateY(-50%);
            color: white;
            font-size: 50px;
            cursor: pointer;
            padding: 10px 20px;
            user-select: none;
            transition: color 0.3s;
        }
       
        .nav-btn:hover {
            color: #f1c40f;
        }
       
        .prev {
            left: 20px;
        }
       
        .next {
            right: 20px;
        }
       
        .winner-info {
            display: flex;
            align-items: center;
            justify-content: center;
            margin-bottom: 5px;
        }
       
        footer {
            text-align: center;
            padding: 20px;
            color: #7f8c8d;
            font-size: 0.9rem;
            border-top: 1px solid #ddd;
            margin-top: 20px;
        }
       
        @media (max-width: 768px) {
            h1 {
                font-size: 2.2rem;
            }
           
            .nav-btn {
                font-size: 35px;
            }
           
            .prev {
                left: 10px;
            }
           
            .next {
                right: 10px;
            }
           
            .gallery-img {
                height: 200px;
            }
        }
       
        @media (max-width: 480px) {
            .gallery {
                grid-template-columns: 1fr;
            }
           
            h1 {
                font-size: 1.8rem;
            }
           
            .gallery-img {
                height: 180px;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <header>
            <h1> Итоги раскраски</h1>
            <p class="subtitle">Настало время увековечить всех участников нашей раскраски и одарить каждого денежным переводом на счет (ваши кошельки уже пополнены). Хоть у всех и была одна база для раскрашивания, но каждый внес в работу свое видение, свое настроение, от чего все рисунки получились индивидуальными, но при этом праздничными!
Всем спасибо за участие, любуйтесь результатами, наслаждайтесь, а картинки увеличиваются по клику.
</p>
        </header>
       
        <div class="gallery" id="gallery">
            </div>
       
        <div class="modal" id="imageModal">
            <span class="close" id="closeModal">&times;</span>
            <div class="nav-btn prev" id="prevBtn">❮</div>
            <div class="nav-btn next" id="nextBtn">❯</div>
            <img class="modal-content" id="modalImage">
            <div class="modal-author" id="modalAuthor"></div>
        </div>
       
        <footer>
            <p>Конкурс "Новогодний зомби" • Все работы защищены авторским правом • © 2025</p>
        </footer>
    </div>

    <script>
        // Массив данных о победителях
        const winners = [
            { id: 1, name: "Hiram Crowe", title: "Бегу поздравить - волосы назад", position: 1, imageUrl: "https://upforme.ru/uploads/001c/84/76/2/594768.png" },
            { id: 2, name: "Anna Hartman", title: "Баня перед новым годом - только с еловым веником", position: 2, imageUrl: "https://upforme.ru/uploads/001c/84/76/2/501907.png" },
            { id: 3, name: "Ricky Wachowski", title: "Лучший праздник - с коллегами на работе", position: 3, imageUrl: "https://upforme.ru/uploads/001c/84/76/2/381989.png" },
            { id: 4, name: "Marco Rossi", title: "Мгновение перед чудом или Сладкоежка", position: 4, imageUrl: "https://upforme.ru/uploads/001c/84/76/2/465728.png" },
            { id: 5, name: "Kurt Dawson", title: "Где же эта новогодняя красавица?", position: 5, imageUrl: "https://upforme.ru/uploads/001c/84/76/2/442564.png" },
            { id: 6, name: "David Shaw", title: "Добряк Санта несет подарки детворе", position: 6, imageUrl: "https://upforme.ru/uploads/001c/84/76/2/272026.png" },
            { id: 7, name: "Dolores Kruger", title: "Пакостник Гринч - похититель гирлянд", position: 7, imageUrl: "https://upforme.ru/uploads/001c/84/76/2/449614.png" },
            { id: 8, name: "Graham Chase", title: "Прекрасны олени Санты Клауса в ночной тиши", position: 8, imageUrl: "https://upforme.ru/uploads/001c/84/76/2/438870.png" },
            { id: 9, name: "Faye Connolly", title: "Звон рождественских колокольчиков", position: 9, imageUrl: "https://upforme.ru/uploads/001c/84/76/2/38605.png" },
            { id: 10, name: "Amanda Myers", title: "Мандариновая ночь в зимнем лесу", position: 10, imageUrl: "https://upforme.ru/uploads/001c/84/76/2/944355.png" }
        ];

        // Элементы DOM
        const galleryElement = document.getElementById('gallery');
        const modalElement = document.getElementById('imageModal');
        const modalImageElement = document.getElementById('modalImage');
        const modalAuthorElement = document.getElementById('modalAuthor');
        const closeModalElement = document.getElementById('closeModal');
        const prevBtnElement = document.getElementById('prevBtn');
        const nextBtnElement = document.getElementById('nextBtn');

        let currentImageIndex = 0;

        // Функция для создания галереи
        function createGallery() {
            winners.forEach((winner, index) => {
                const galleryItem = document.createElement('div');
                galleryItem.className = 'gallery-item';
                galleryItem.dataset.index = index;
               
                // Для всех участников используем одинаковую золотую звездочку
                const positionIcon = '<i class="fas fa-star" style="color:#ffd700; margin-right: 8px; font-size: 1.2rem;"></i>';
               
                galleryItem.innerHTML = `
                    <img src="${winner.imageUrl}" alt="${winner.title}" class="gallery-img">
                    <div class="author">
                        <div class="winner-info">
                            ${positionIcon}
                            <span class="author-name">${winner.name}</span>
                        </div>
                        <div style="color: #7f8c8d; font-size: 0.9rem; margin-top: 5px;">"${winner.title}"</div>
                    </div>
                `;
               
                galleryItem.addEventListener('click', () => openModal(index));
                galleryElement.appendChild(galleryItem);
            });
        }

        // Функция для открытия модального окна
        function openModal(index) {
            currentImageIndex = parseInt(index);
            updateModalContent();
            modalElement.style.display = 'flex';
            document.body.style.overflow = 'hidden'; // Блокируем скролл страницы
        }

        // Функция для обновления содержимого модального окна
        function updateModalContent() {
            const winner = winners[currentImageIndex];
            modalImageElement.src = winner.imageUrl;
            modalImageElement.alt = winner.title;
           
            // Звездочка для модального окна
            const positionIcon = '<i class="fas fa-star" style="color:#ffd700; margin-right: 10px;"></i>';
           
            modalAuthorElement.innerHTML = `
                ${positionIcon}
                <strong>${winner.name}</strong> - "${winner.title}"
            `;
        }

        // Функция для закрытия модального окна
        function closeModal() {
            modalElement.style.display = 'none';
            document.body.style.overflow = 'auto'; // Восстанавливаем скролл страницы
        }

        // Функция для показа следующего изображения
        function showNextImage() {
            currentImageIndex = (currentImageIndex + 1) % winners.length;
            updateModalContent();
        }

        // Функция для показа предыдущего изображения
        function showPrevImage() {
            currentImageIndex = (currentImageIndex - 1 + winners.length) % winners.length;
            updateModalContent();
        }

        // Обработчики событий для навигации с клавиатуры
        document.addEventListener('keydown', (event) => {
            if (modalElement.style.display === 'flex') {
                if (event.key === 'Escape') {
                    closeModal();
                } else if (event.key === 'ArrowRight') {
                    showNextImage();
                } else if (event.key === 'ArrowLeft') {
                    showPrevImage();
                }
            }
        });

        // Назначаем обработчики событий
        closeModalElement.addEventListener('click', closeModal);
        prevBtnElement.addEventListener('click', showPrevImage);
        nextBtnElement.addEventListener('click', showNextImage);

        // Закрытие модального окна при клике вне изображения
        modalElement.addEventListener('click', (event) => {
            if (event.target === modalElement) {
                closeModal();
            }
        });

        // Инициализация галереи
        createGallery();
    </script>
</body>
</html>[/html]
[hideprofile]

0

22

[html]<div id="slotMachine" style="width:90%; max-width:600px; background:#1c1b1b; color:#fff; border-radius:10px; padding:2%; text-align:center; font-family:Georgia; margin:2% auto; box-shadow:0 0 10px rgba(0,0,0,0.6); position:relative;">

  <!-- Ник и баланс (теперь только сессионный) -->
  <div style="position:absolute; top:8px; left:8px; font-size:0.9em; color:#ffdd8a; text-align:left;">
    👤 <span id="userName">Загрузка...</span><br>
    💰 <span id="userCoins">0</span> (выигрыш за сессию)
  </div>

  <b style="font-size:1.3em;">🎰 Слот-машина</b>

  <div style="margin-top:1%; font-size:0.9em; color:#d9c7a1;">
    ⏳ Новый спин через: <span id="timer" style="font-weight:bold; color:#ffdd8a;"></span>
  </div>

  <div style="display:flex; justify-content:center; gap:2%; margin:3% 0;">
    <div class="slotCell" id="slot1" style="flex:1; aspect-ratio:1; background:#000; border:0.3% solid #7c653f; border-radius:8px; display:flex; align-items:center; justify-content:center;"></div>
    <div class="slotCell" id="slot2" style="flex:1; aspect-ratio:1; background:#000; border:0.3% solid #7c653f; border-radius:8px; display:flex; align-items:center; justify-content:center;"></div>
    <div class="slotCell" id="slot3" style="flex:1; aspect-ratio:1; background:#000; border:0.3% solid #7c653f; border-radius:8px; display:flex; align-items:center; justify-content:center;"></div>
  </div>

  <button id="spinBtn" style="padding:1% 3%; cursor:pointer; background:#b8863b; color:#fff; border:0.3% solid #000; font-weight:bold; border-radius:6px; box-shadow:0 0 5px rgba(0,0,0,0.6);">
    Крутить и Отправить 🎲
  </button>

  <div id="winDisplay" style="margin-top:12px; font-size:1.1em; font-weight:bold; color:#ffdd00; min-height:2.2em;"></div>

  <!-- Это поле теперь можно скрыть, но оставим для отладки -->
  <textarea id="resultCode" readonly style="width:97%; height:80px; margin-top:12px; background:#0f0f10; color:#ffddae; border-radius:6px; padding:1%; font-family:'Courier New', monospace; font-size:0.85em; white-space:pre-wrap; overflow:auto; display: none;"></textarea>

  <!-- Кнопка Копировать больше не так нужна, но пусть будет -->
  <button onclick="copyResult()" style="margin-top:12px; background:#444; border:0.3% solid #aaa; padding:1% 2%; cursor:pointer; color:#fff; border-radius:6px; display: none;">
    📋 Копировать результат
  </button>
</div>

<style>
.winGlow { animation: glowPulse 1s infinite alternate; }
@keyframes glowPulse {
  from { text-shadow: 0 0 6px #ffd700; color:#fff2b8; }
  to   { text-shadow: 0 0 18px #ffd700, 0 0 36px #ffb700; color:#fff9db; }
}
</style>

<script>
// Переменная для подсчета выигрыша за сессию (без localStorage)
let userCoins = 0;

/* Баланс и ник */
let userName = localStorage.getItem("slotUserName");

// Попытка найти ник на странице (для многих "rusff" форумов)
if (!userName) {
    try {
        // Ищем ссылку на профиль в шапке или юзербаре
        let userLink = document.querySelector('#header-menu a[href*="showuser="], .userbar a[href*="showuser="], .username a, a.user-link');
        if (userLink) {
            userName = userLink.textContent.trim();
            localStorage.setItem("slotUserName", userName);
        }
    } catch (e) {
        console.log("Не удалось автоматически найти ник на странице.");
    }
}

// Если все еще нет, спрашиваем
if (!userName) {
  userName = prompt("Введите ваш ник:");
  if (!userName) userName = "Игрок";
  localStorage.setItem("slotUserName", userName);
}
document.getElementById("userName").textContent = userName;
document.getElementById("userCoins").textContent = userCoins;

/* Кулдаун (остается в localStorage для удобства в ОДНОМ браузере) */
const COOLDOWN_MINUTES = 0; // Вы можете вернуть сюда свое значение
const CD = COOLDOWN_MINUTES * 60000;
const timer = document.getElementById("timer");
const spinBtn = document.getElementById("spinBtn");
function canSpin(){
  return Date.now() - (localStorage.getItem("slotLastSpin") || 0) >= CD;
}
function updateTimer(){
  let last = localStorage.getItem("slotLastSpin") || 0;
  let diff = CD - (Date.now() - last);
  if (diff <= 0) { timer.textContent="готово ✅"; spinBtn.disabled=false; return; }
  timer.textContent = Math.floor(diff/60000)+"м "+Math.floor((diff%60000)/1000)+"с";
  spinBtn.disabled = true; // Блокируем кнопку, пока таймер идет
}
setInterval(updateTimer,1000); updateTimer();

/* Символы */
const symbols = [
  "https://upforme.ru/uploads/001c/84/76/2/793146.png",
  "https://upforme.ru/uploads/001c/84/76/2/635838.png",
  "https://upforme.ru/uploads/001c/84/76/2/604915.png",
  "https://upforme.ru/uploads/001c/84/76/2/703897.png"
];

const ids = ["slot1","slot2","slot3"];
const winDisplay = document.getElementById("winDisplay");
const resultCode = document.getElementById("resultCode");

/* Спин */
spinBtn.onclick = function(){
  if(!canSpin()){
    winDisplay.textContent = "Подождите! (Перезагрузите страницу, если таймер завис)";
    return;
  }

  let r = ids.map(()=> symbols[Math.floor(Math.random()*symbols.length)]);
  ids.forEach((id,i)=>document.getElementById(id).innerHTML=`<img src="${r[i]}" style="max-width:80%;max-height:80%;">`);
  localStorage.setItem("slotLastSpin", Date.now());
  spinBtn.disabled = true;
  updateTimer(); // Сразу обновить таймер

  let counts = {}; r.forEach(s=>counts[s]=(counts[s]||0)+1);
  let reward = 0, text="", color="#7c653f";

  if(Object.values(counts).includes(3)){
    reward = 100; text="🎉 Тройка — +100"; color="#ffd700";
  } else if(Object.values(counts).includes(2)){
    reward = 50; text="✨ Пара — +50"; color="#c0a060";
  } else if(r.includes(symbols[2]) && r.includes(symbols[3])){
    reward = 500; text="🔥 Комбо №3+№4 — +500"; color="#ff6a9a";
  } else {
    text="Попробуй еще"; color="#7c653f";
  }

  /* ✅ Обновляем сессионные монеты */
  userCoins += reward;
  document.getElementById("userCoins").textContent = userCoins;

  winDisplay.innerHTML = reward>0? `<span class="winGlow">Победа!</span><br>${text}` : text;

  resultCode.value = `<div style="border:4px solid ${color}; padding:10px;">🎰 Результат | 🧑 ${userName} | 💰 ${reward}</div>`;

  // --- БЛОК АВТО-ОТПРАВКИ ---
 
  const FORUM_TEXTAREA_SELECTOR = "#main-reply"; // <-- Ваш селектор (id="main-reply")
  const FORUM_SUBMIT_SELECTOR = "input[name='submit']";   // <-- Ваш селектор (name="submit")

  try {
    let textarea = null;
    let submitButton = null;

    // --- ИЗМЕНЕНИЕ: Сначала ищем в parent.document (для iframe) ---
    try {
        if (parent && parent.document) {
            textarea = parent.document.querySelector(FORUM_TEXTAREA_SELECTOR);
            submitButton = parent.document.querySelector(FORUM_SUBMIT_SELECTOR);
        }
    } catch (e) {
        // Ошибка доступа к parent.document (cross-origin), значит мы не в iframe, или в 'sandboxed'
        console.warn("Скрипт слота: не удалось получить доступ к parent.document. Попытка в 'document'.", e);
    }

    // --- Если не нашли в parent, ищем в 'document' (старый способ) ---
    if (!textarea || !submitButton) {
        console.log("Скрипт слота: Не найдено в parent.document. Поиск в 'document'...");
        textarea = document.querySelector(FORUM_TEXTAREA_SELECTOR);
        submitButton = document.querySelector(FORUM_SUBMIT_SELECTOR);
    }

    if (textarea && submitButton) {
      // Добавляем результат к существующему тексту (например, к цитате)
      let currentText = textarea.value || "";
      textarea.value = (currentText ? currentText + "\n\n" : "") + resultCode.value;

      // --- ИЗМЕНЕНИЕ: Генерируем события, чтобы форум "увидел" изменения ---
      textarea.dispatchEvent(new Event('input', { bubbles: true }));
      textarea.dispatchEvent(new Event('change', { bubbles: true }));
     
      // Небольшая задержка перед кликом, чтобы дать JS форума среагировать
      setTimeout(() => {
          submitButton.click(); // Нажимаем "Отправить"
      }, 150); // 150 миллисекунд

    } else {
      if (!textarea) console.error("Скрипт слота: Не найдено поле ввода текста ни в 'parent', ни в 'document' по селектору:", FORUM_TEXTAREA_SELECTOR);
      if (!submitButton) console.error("Скрипт слота: Не найдена кнопка отправки ни в 'parent', ни в 'document' по селектору:", FORUM_SUBMIT_SELECTOR);
      winDisplay.innerHTML += "<br><small>(Ошибка авто-отправки. Скопируйте вручную)</small>";
      resultCode.style.display = 'block'; // Показываем поле, раз отправка не удалась
    }
  } catch (e) {
    console.error("Ошибка при авто-отправке:", e);
    winDisplay.innerHTML += "<br><small>(Ошибка авто-отправки. Скопируйте вручную)</small>";
    resultCode.style.display = 'block';
  }
};

/* Копировать (теперь запасная функция) */
function copyResult(){
  resultCode.select();
  document.execCommand("copy");
  // Используем winDisplay для оповещения, т.к. alert() может блокироваться
  winDisplay.textContent = "Скопировано!";
  setTimeout(() => { winDisplay.textContent = ""; }, 2000);
}
</script>[/html]

0

23

🎴 Вытянуты карты из 2-гранной колоды

https://upforme.ru/uploads/001c/84/76/2/221722.png
🔄 Колесо фортуны — случай, судьба.


[dice=5808-1:6:0:]

0

24

[html]<div id="slotMachine" style="width:90%; max-width:600px; background:#1c1b1b; color:#fff; border-radius:10px; padding:2%; text-align:center; font-family:Georgia; margin:2% auto; box-shadow:0 0 10px rgba(0,0,0,0.6); position:relative;">

  <!-- Ник и баланс (теперь только сессионный) -->
  <div style="position:absolute; top:8px; left:8px; font-size:0.9em; color:#ffdd8a; text-align:left;">
    �� <span id="userName">Загрузка...</span><br>
    �� <span id="userCoins">0</span> (выигрыш за сессию)
  </div>

  <b style="font-size:1.3em;">�� Слот-машина</b>

  <div style="margin-top:1%; font-size:0.9em; color:#d9c7a1;">
    ⏳ Новый спин через: <span id="timer" style="font-weight:bold; color:#ffdd8a;"></span>
  </div>

  <div style="display:flex; justify-content:center; gap:2%; margin:3% 0;">
    <div class="slotCell" id="slot1" style="flex:1; aspect-ratio:1; background:#000; border:0.3% solid #7c653f; border-radius:8px; display:flex; align-items:center; justify-content:center;"></div>
    <div class="slotCell" id="slot2" style="flex:1; aspect-ratio:1; background:#000; border:0.3% solid #7c653f; border-radius:8px; display:flex; align-items:center; justify-content:center;"></div>
    <div class="slotCell" id="slot3" style="flex:1; aspect-ratio:1; background:#000; border:0.3% solid #7c653f; border-radius:8px; display:flex; align-items:center; justify-content:center;"></div>
  </div>

  <button type="submit" id="spinBtn" class="button submit" style="padding:1% 3%; cursor:pointer; background:#b8863b; color:#fff; border:0.3% solid #000; font-weight:bold; border-radius:6px; box-shadow:0 0 5px rgba(0,0,0,0.6);">
    Крутить и Отправить ��
  </button>

  <div id="winDisplay" style="margin-top:12px; font-size:1.1em; font-weight:bold; color:#ffdd00; min-height:2.2em;"></div>

  <!-- Это поле теперь можно скрыть, но оставим для отладки -->
  <textarea id="resultCode" readonly style="width:97%; height:80px; margin-top:12px; background:#0f0f10; color:#ffddae; border-radius:6px; padding:1%; font-family:'Courier New', monospace; font-size:0.85em; white-space:pre-wrap; overflow:auto; display: none;"></textarea>

  <!-- Кнопка Копировать больше не так нужна, но пусть будет -->
  <button onclick="copyResult()" style="margin-top:12px; background:#444; border:0.3% solid #aaa; padding:1% 2%; cursor:pointer; color:#fff; border-radius:6px; display: none;">
    �� Копировать результат
  </button>
</div>

<style>
.winGlow { animation: glowPulse 1s infinite alternate; }
@keyframes glowPulse {
  from { text-shadow: 0 0 6px #ffd700; color:#fff2b8; }
  to   { text-shadow: 0 0 18px #ffd700, 0 0 36px #ffb700; color:#fff9db; }
}
</style>

<script>
// Переменная для подсчета выигрыша за сессию (без localStorage)
let userCoins = 0;

/* Баланс и ник */
let userName = localStorage.getItem("slotUserName");

// Попытка найти ник на странице (для многих "rusff" форумов)
if (!userName) {
    try {
        // Ищем ссылку на профиль в шапке или юзербаре
        let userLink = document.querySelector('#header-menu a[href*="showuser="], .userbar a[href*="showuser="], .username a, a.user-link');
        if (userLink) {
            userName = userLink.textContent.trim();
            localStorage.setItem("slotUserName", userName);
        }
    } catch (e) {
        console.log("Не удалось автоматически найти ник на странице.");
    }
}

// Если все еще нет, спрашиваем
if (!userName) {
  userName = prompt("Введите ваш ник:");
  if (!userName) userName = "Игрок";
  localStorage.setItem("slotUserName", userName);
}
document.getElementById("userName").textContent = userName;
document.getElementById("userCoins").textContent = userCoins;

/* Кулдаун (остается в localStorage для удобства в ОДНОМ браузере) */
const COOLDOWN_MINUTES = 0; // Вы можете вернуть сюда свое значение
const CD = COOLDOWN_MINUTES * 60000;
const timer = document.getElementById("timer");
const spinBtn = document.getElementById("spinBtn");
function canSpin(){
  return Date.now() - (localStorage.getItem("slotLastSpin") || 0) >= CD;
}
function updateTimer(){
  let last = localStorage.getItem("slotLastSpin") || 0;
  let diff = CD - (Date.now() - last);
  if (diff <= 0) { timer.textContent="готово ✅"; spinBtn.disabled=false; return; }
  timer.textContent = Math.floor(diff/60000)+"м "+Math.floor((diff%60000)/1000)+"с";
  spinBtn.disabled = true; // Блокируем кнопку, пока таймер идет
}
setInterval(updateTimer,1000); updateTimer();

/* Символы */
const symbols = [
  "https://upforme.ru/uploads/001c/84/76/2/793146.png",
  "https://upforme.ru/uploads/001c/84/76/2/635838.png",
  "https://upforme.ru/uploads/001c/84/76/2/604915.png",
  "https://upforme.ru/uploads/001c/84/76/2/703897.png"
];

const ids = ["slot1","slot2","slot3"];
const winDisplay = document.getElementById("winDisplay");
const resultCode = document.getElementById("resultCode");

/* Спин */
spinBtn.onclick = function(){
  if(!canSpin()){
    winDisplay.textContent = "Подождите! (Перезагрузите страницу, если таймер завис)";
    return;
  }

  let r = ids.map(()=> symbols[Math.floor(Math.random()*symbols.length)]);
  ids.forEach((id,i)=>document.getElementById(id).innerHTML=`<img src="${r[i]}" style="max-width:80%;max-height:80%;">`);
  localStorage.setItem("slotLastSpin", Date.now());
  spinBtn.disabled = true;
  updateTimer(); // Сразу обновить таймер

  let counts = {}; r.forEach(s=>counts[s]=(counts[s]||0)+1);
  let reward = 0, text="", color="#7c653f";

  if(Object.values(counts).includes(3)){
    reward = 100; text="�� Тройка — +100"; color="#ffd700";
  } else if(Object.values(counts).includes(2)){
    reward = 50; text="✨ Пара — +50"; color="#c0a060";
  } else if(r.includes(symbols[2]) && r.includes(symbols[3])){
    reward = 500; text="�� Комбо №3+№4 — +500"; color="#ff6a9a";
  } else {
    text="Попробуй еще"; color="#7c653f";
  }

  /* ✅ Обновляем сессионные монеты */
  userCoins += reward;
  document.getElementById("userCoins").textContent = userCoins;

  winDisplay.innerHTML = reward>0? `<span class="winGlow">Победа!</span><br>${text}` : text;

  resultCode.value = `<div style="border:4px solid ${color}; padding:10px;">�� Результат | �� ${userName} | �� ${reward}</div>`;

  // --- БЛОК АВТО-ОТПРАВКИ ---
 
  const FORUM_TEXTAREA_SELECTOR = "#main-reply"; // <-- Ваш селектор (id="main-reply")
  const FORUM_SUBMIT_SELECTOR = "input[name='submit']";   // <-- Ваш селектор (name="submit")

  try {
    let textarea = null;
    let submitButton = null;

    // --- ИЗМЕНЕНИЕ: Сначала ищем в parent.document (для iframe) ---
    try {
        if (parent && parent.document) {
            textarea = parent.document.querySelector(FORUM_TEXTAREA_SELECTOR);
            submitButton = parent.document.querySelector(FORUM_SUBMIT_SELECTOR);
        }
    } catch (e) {
        // Ошибка доступа к parent.document (cross-origin), значит мы не в iframe, или в 'sandboxed'
        console.warn("Скрипт слота: не удалось получить доступ к parent.document. Попытка в 'document'.", e);
    }

    // --- Если не нашли в parent, ищем в 'document' (старый способ) ---
    if (!textarea || !submitButton) {
        console.log("Скрипт слота: Не найдено в parent.document. Поиск в 'document'...");
        textarea = document.querySelector(FORUM_TEXTAREA_SELECTOR);
        submitButton = document.querySelector(FORUM_SUBMIT_SELECTOR);
    }

    if (textarea && submitButton) {
      // Добавляем результат к существующему тексту (например, к цитате)
      let currentText = textarea.value || "";
      textarea.value = (currentText ? currentText + "\n\n" : "") + resultCode.value;

      // --- ИЗМЕНЕНИЕ: Генерируем события, чтобы форум "увидел" изменения ---
      textarea.dispatchEvent(new Event('input', { bubbles: true }));
      textarea.dispatchEvent(new Event('change', { bubbles: true }));
     
      // Небольшая задержка перед кликом, чтобы дать JS форума среагировать
      setTimeout(() => {
          submitButton.click(); // Нажимаем "Отправить"
      }, 150); // 150 миллисекунд

    } else {
      if (!textarea) console.error("Скрипт слота: Не найдено поле ввода текста ни в 'parent', ни в 'document' по селектору:", FORUM_TEXTAREA_SELECTOR);
      if (!submitButton) console.error("Скрипт слота: Не найдена кнопка отправки ни в 'parent', ни в 'document' по селектору:", FORUM_SUBMIT_SELECTOR);
      winDisplay.innerHTML += "<br><small>(Ошибка авто-отправки. Скопируйте вручную)</small>";
      resultCode.style.display = 'block'; // Показываем поле, раз отправка не удалась
    }
  } catch (e) {
    console.error("Ошибка при авто-отправке:", e);
    winDisplay.innerHTML += "<br><small>(Ошибка авто-отправки. Скопируйте вручную)</small>";
    resultCode.style.display = 'block';
  }
};

/* Копировать (теперь запасная функция) */
function copyResult(){
  resultCode.select();
  document.execCommand("copy");
  // Используем winDisplay для оповещения, т.к. alert() может блокироваться
  winDisplay.textContent = "Скопировано!";
  setTimeout(() => { winDisplay.textContent = ""; }, 2000);
}
</script>[/html]

0

25

[html]<style>
.slot-box {
  width: 90%;
  margin: 20px auto;
  background:#111;
  border:3px solid #ffd700;
  padding:15px;
  font-family:Georgia;
  color:#fff;
  text-align:center;
  border-radius:10px;
}
.slot-reels img {
  width:80px;
  height:80px;
  margin:5px;
  border:2px solid #444;
  border-radius:8px;
}
.slot-btn {
  padding:10px 20px;
  background:#ffd700;
  border:none;
  cursor:pointer;
  font-weight:bold;
  border-radius:8px;
  margin-top:10px;
}
.slot-btn:hover {
  background:#ffea70;
}
.slot-win {color:#00ff9c;font-size:18px;margin-top:5px;}
.slot-lose {color:#ff4a4a;font-size:18px;margin-top:5px;}
</style>

<div class="slot-box">
  <h2>🎰 Слот-машина</h2>
  <div id="reels" class="slot-reels"></div>
  <button class="slot-btn" onclick="slotSpin()">Крутить</button>
  <div id="slotResult"></div>
</div>

<script>
const slotImages = [
  "https://i.imgur.com/6XQxE4b.png",
  "https://i.imgur.com/Ib6bpRV.png",
  "https://i.imgur.com/1L7oYDQ.png",
  "https://i.imgur.com/Op5Tfo3.png",
  "https://i.imgur.com/ZpzmEii.png"
];

function slotSpin(){
  const picks = [];
  for (let i=0; i<4; i++) {
    picks.push(slotImages[Math.floor(Math.random()*slotImages.length)]);
  }

  document.getElementById("reels").innerHTML = picks.map(img=>`<img src="${img}">`).join("");

  let reward = 0;
  let text = "";

  const uniq = new Set(picks).size;
  if (uniq === 1) { reward = 100; text = "💎 Джекпот! +100"; }
  else if (uniq === 2) { reward = 20; text = "✨ Выигрыш! +20"; }
  else if (uniq === 3) { reward = 5; text = "✅ Совпадение! +5"; }
  else { text = "Попробуй ещё!"; }

  const forumCode =
`🎰 Слот-машина
🔹 Выпало:
${picks.join("\n")}
🎁 Награда: +${reward} монет
🕒 Ход: ${new Date().toLocaleString()}`;

  document.getElementById("slotResult").innerHTML =
    reward>0 ? `<div class="slot-win">${text}</div>` : `<div class="slot-lose">${text}</div>`;

  if (typeof window.slotMachineAutoPost === "function") {
    window.slotMachineAutoPost(forumCode);
  } else {
    alert("Ошибка: автопубликация не найдена. Сообщи администратору.");
  }
}
</script>[/html]

0

26

[signed-dice data="eyJudW1zIjpbNDgsNDUsOTcsOTYsOTIsMjQsMTUsNDksMjIsODVdLCJ0b3RhbCI6MTAwLCJ0cyI6MTc2MjI2NjY3NjgzN30" sig="-gkOAgI9LDJQB98420EBV83wGE6oqAr8IKYWuxVYJ3w"]

0

27

[signed-dice data="eyJudW1zIjpbN10sInRvdGFsIjoxMCwidHMiOjE3NjIyNjk2Mzg5OTl9" sig="v-oS6Fsmh8N5cdZ-7abUXmtaRhkfBOM-5Evp7NU-2pQ"]

0

28

[signed-dice data="eyJudW1zIjpbNCwxMCw1LDEsNiw4LDIsM10sInRvdGFsIjoxMCwidHMiOjE3NjIyNjk2NjM4Nzd9" sig="qs-3R75tRAF3eOduaFupLcX8r92xkuI7kXKucY9W-Nc"]

0

29

[signed-dice data="eyJudW1zIjpbNyw4LDYsNF0sInRvdGFsIjoxMCwidHMiOjE3NjIyNjk2ODU2MjN9" sig="5yKMZu5gFGbnb8khRB7R1p0UtYnxf5nqOg-qJZmYS2k"]

0

30

[signed-dice data="eyJudW1zIjpbMiw3LDEwLDYsNF0sInRvdGFsIjoxMCwidHMiOjE3NjIyNjk3OTQ1NzF9" sig="G1YpZoZgeIjeQR9Uv-Xeldkfbgzr1mpxKkCxCCMZGEw"]

0


Вы здесь » Тест оформления » Короткие зарисовки » Тестовое сообщение


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