GospodinNub

GospodinNub

На Пикабу
поставил 509 плюсов и 427 минусов
отредактировал 0 постов
проголосовал за 0 редактирований
Награды:
10 лет на Пикабу
5132 рейтинг 225 подписчиков 11 подписок 61 пост 2 в горячем

Ищу игру. Без рейтинга

Привет, помогите найти игру. Старая такая, шутер-слешер.

Действие кажется происходит в Москве, нападают кажется инопланетяне, главный герой заражается их днк и постепенно мутирует. Сначала дают суперзрение, потом ярость, клешни, инвиз и т.д.


В качестве противников выступают те самые алени и спецназ различного вида, из аленей сначала вроде жуки, потом гончие псы, где-то под конец были невидимые кровососы.


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

Кажется на 2 уровне был босс гигантский которго надо было в упор из зенитки на крыше хрущёвки расстреливать.

Буду очень благодарен, Спасибо

P.S. Игру нашли. The Swarm, Симбионт

Ищу комикс. Без рейтинга

Привет, помогите найти комикс. Шутка про RPG, "откуда в монстрах лут". На одной из картинок черт запихивает в волка огромный щит или что-то подобное.

Буду очень благодарен

Котаны, у меня кот! Настоящий кот! КОТИЩЕ! Сила  пикабу! Дневник Гагарина: Пролог

Началась эта история сегодня между 14-15 часами. Сижу на паре, пара скучная, препод пытается настроить докер контейнер у студентов у которых всё падает. Короче - сижу читаю пикабу на паре, политота, убийства, ограбления, котики, всё как обычно. И тут я вижу пост https://pikabu.ru/story/otdam_kotenka_meynkuna_moskva_626448....


На этом моменте надо остановиться поподробнее. У меня была (и есть) кошка, зовут Рыжая, ей уже около 10 лет, но она живёт с мамой и бабушкой в другом городе (я уехал учится в Мск около 6 лет назад).


Вот эта вот бестия (добрющая).

Котаны, у меня кот! Настоящий кот! КОТИЩЕ! Сила  пикабу! Дневник Гагарина: Пролог Кот, Мейн-кун, Сила Пикабу, История, Длиннопост

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


Ну что-то я отвлёкся. Так вот, недавно я переехал на хату и девушка мне подкинула собаку на передержку на пару недель. Вот эту вот. Её зовут Белл

Котаны, у меня кот! Настоящий кот! КОТИЩЕ! Сила  пикабу! Дневник Гагарина: Пролог Кот, Мейн-кун, Сила Пикабу, История, Длиннопост

Мячик со стола нашего начальника

Котаны, у меня кот! Настоящий кот! КОТИЩЕ! Сила  пикабу! Дневник Гагарина: Пролог Кот, Мейн-кун, Сила Пикабу, История, Длиннопост

В офисе играли с собакой в футбол.

Котаны, у меня кот! Настоящий кот! КОТИЩЕ! Сила  пикабу! Дневник Гагарина: Пролог Кот, Мейн-кун, Сила Пикабу, История, Длиннопост

После того как я вернул Белл хозяевам, я понял две вещи:
1)Я кошатник

2)Я очень тоскую по живности дома


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


И тут бац! Пост от @drumboy. Котёнок мейн-куна! Я резко подорвался, купил переноску, лоток и рванул за этим маленьким чудом вместе с девушкой. Гагарин оказался просто добрейшим чудом, а его хозяин невероятно приятным в общении мужиком, посоветовал как за ним ухаживать, выдал немного корма на первое время и кошачьи какахи.


Вот как мы ехали с Юрой в метро, он сразу завоевал обожание двух старушек, студентов, неизвестной парочки и наряда полиции.

Котаны, у меня кот! Настоящий кот! КОТИЩЕ! Сила  пикабу! Дневник Гагарина: Пролог Кот, Мейн-кун, Сила Пикабу, История, Длиннопост

На часах то было уже 21.30 когда мы добрались до той жопы мира, где я живу. Еле успел во внезапно работающий зоомагазин за кормом и наполнителем. (иначе бы пришлось идти и покупать в перекрестке на 1 день, я завтра уже покупать что-то нормально). Купил всё о чём говорил drumboy, и ещё немного


Принёс кота домой, пока ставил чашки с едой и водой Гагарин выбрался из переноски и пошёл исследовать квартиру. А после залез за диван.


На фото жопка кота

Котаны, у меня кот! Настоящий кот! КОТИЩЕ! Сила  пикабу! Дневник Гагарина: Пролог Кот, Мейн-кун, Сила Пикабу, История, Длиннопост

Тут я уже вспомнил слова drumboy "Ну вы его дня 3 не тискайте, пусть обвыкнется". И хотел покодить, но не тут то было. Гагарин полез изучать неизведанное, императорским маршем пройдясь по квартире.


(фотки смазаны т.к. поймать его в статике очень сложно, снимал на наполнитель от кошачьего туалета)

Котаны, у меня кот! Настоящий кот! КОТИЩЕ! Сила  пикабу! Дневник Гагарина: Пролог Кот, Мейн-кун, Сила Пикабу, История, Длиннопост
Котаны, у меня кот! Настоящий кот! КОТИЩЕ! Сила  пикабу! Дневник Гагарина: Пролог Кот, Мейн-кун, Сила Пикабу, История, Длиннопост
Котаны, у меня кот! Настоящий кот! КОТИЩЕ! Сила  пикабу! Дневник Гагарина: Пролог Кот, Мейн-кун, Сила Пикабу, История, Длиннопост

Ну думал ему не мешать, и опять он меня нагрел. Пока он сидел за диваном, видать подключился к мировому кошачьему серваку и обновил дрова. Сразу же полез заниматься типично кошачьими делами - мешать программисту кодить. Залез на клаву и улёгся в руках, этого ему не хватило и он начала ластиться (спустя пол часа в новом доме).

Котаны, у меня кот! Настоящий кот! КОТИЩЕ! Сила  пикабу! Дневник Гагарина: Пролог Кот, Мейн-кун, Сила Пикабу, История, Длиннопост
Котаны, у меня кот! Настоящий кот! КОТИЩЕ! Сила  пикабу! Дневник Гагарина: Пролог Кот, Мейн-кун, Сила Пикабу, История, Длиннопост
Котаны, у меня кот! Настоящий кот! КОТИЩЕ! Сила  пикабу! Дневник Гагарина: Пролог Кот, Мейн-кун, Сила Пикабу, История, Длиннопост

Урчит) И ещё возмущается если его перестать почёсывать!


Слава богу теперь моя жизнь не будет прежней. Спасибо тебе drumboy! Спасибо Пикабу!


P.S. Пока дописывал окончание поста Гагарин успешно нагадил в новом лотке и хрустит едой!


P.P.S. Девушка согласилась переехать ко мне, только чтобы почаще гладить этого красавца. Пол года уговаривал! Секите фишку, работает!

Показать полностью 12

Геральт, прости, мы всё про*****

Генри Кавилл, известный по роли Супермена в киновселенной DC, исполнит роль Геральта из Ривии в сериальной адаптации «Ведьмака» от Netflix. Актёр подтвердил это в Instagram.


https://www.igromania.ru/news/77380/MOLNIYa_Genri_Kavill_syg...


https://www.instagram.com/p/BnTrcgwFgSk/?utm_source=ig_embed...

Геральт, прости, мы всё про***** Ведьмак, Netflix, Сериалы, Геральт из Ривии
Геральт, прости, мы всё про***** Ведьмак, Netflix, Сериалы, Геральт из Ривии
Показать полностью 2

Deepfakes. Сообщество которое мы заслужили.

Я бы хотел создать сообщество посвящённое deepfakes. Чтобы все материалы по теме можно было найти в одном месте, шарить датасты для обучения, делиться хинтами в обучении и так далее. В ML вообще нахождение сетей в одном месте очень важно.


Сейчас распознавание образов с использованием данного рода сетей очень сильно хайпанёт)


Сам постов я на эту тему не писал, но есть:


@DoctorBooooom

@timoil94


Которые имеют посты очень очень годные на эту тему


https://pikabu.ru/story/instruktsiya_kak_zapustit_neyroset_m...


Вот например.


Если посты на данную тематику являются обязательными для авторства сообщества, то предлагаю @timoil94, как админа сообщества.


Тема очень узкоспециализирована.

Deepfakes. Сообщество которое мы заслужили. Deepfake, Machinelearning, Машинное обучение
Показать полностью 1

Туториалы для геймдева #1 Локализация и Класс Logic

Привет, Пикабу! Пока писал эту часть, понял что из разбивки которую сразу наметил этот пост получится слишком маленьким, решил объеденить две темы.


Этот пост НЕ претендует на Каноничность, Идеальность кода и архтектуры. Тут могут быть рассказаны не самые аккуратные и эффективные решения. Это просто некоторый набор советов, которые я сам использую, и это облегчает мне жизнь.


Рекомендуется прочтение предыдущего поста: https://pikabu.ru/story/tutorialyi_dlya_geymdeva_0_staticdat...

Logic


Класс Logic это некое сборище полезных и часто используемых функций и хинтов которые едины для всего проекта, а копировать их код в несколько мест не хочется.


Сейчас объясню попонятнее.


Представьте что у вас есть БОЛЬШОЙ и глобальный класс, который хранит текущее состояние игры - (например этот класс потом уходит в сейв). У него есть параметр ЗОЛОТО.  При этом этот параметр изменяется подбором лута, магазином и т.д.


В таком случае в каждом классе вы пишете что-то вроде:


Logic.AddGold(50); \\использовать его можно также как и StaticData

Вопрос - А почему бы также не обращаться сразу к классу для сейва?


Имхо самый правильный ответ, это почему вместо:


public int a;


пишут:


public int a {get; set;};


Т.е. правильное управление доступом. В классе сейвов по хорошему должны быть только серриализуемые переменные.


Если вы не поняли что делает "public int a {get; set;};" и зачем оно может использоваться, то вот простое объяснение: Идеологически так сложилось.

Туториалы для геймдева #1 Локализация и Класс Logic Gamedev, Туториал, Мануалы, Tutorialsgamedev, Unity, Программирование, Csharp, Длиннопост

И ещё пара маленьких плюсов от класса Logic.


1)Удобно управлять рандомом. Как всем известно настоящего рандома в играх нет. Logic позвляет аккамулировать все события которые могут использовать рандом и вы можете напрямую контролировать их порядок вызова.


Пример (простой, но высосаный из пальца):


У вас есть два коллайдера, происходет столкновение. У обоих есть onHit ивент.


Оба что-то делают, вызывая рандом. Никто не гарантирует вам порядок вызова этих ивентов. Т.е. если вы перезагрузите игру результат столкновения может быть другим.


Logic же получит оба ивента, отсортирует их (например сначала всегда обрабатывается вызов от игрока, потом от объекта с которым он столкнулся).


2)Удобно хранить ивенты в одном классе. И точно также удобно вешать на них слушателей. Не надо бегать по 20 классам и смотреть, а убрал ли я всех слушателей, а везде ли ивент сработал  так далее.

Туториалы для геймдева #1 Локализация и Класс Logic Gamedev, Туториал, Мануалы, Tutorialsgamedev, Unity, Программирование, Csharp, Длиннопост

Переходим к локализации.


Когда-нибудь вы соберётесь переводить игру на другие языки. Или сразу будете делать скажем на английском и русском. Вам потребуется как-то аккуратно хранить текст. Аккуратно - это значит в таблице) Создаём лист с названием Texts.

Туториалы для геймдева #1 Локализация и Класс Logic Gamedev, Туториал, Мануалы, Tutorialsgamedev, Unity, Программирование, Csharp, Длиннопост

Собственно всё также как и в остальных листах. Разве что удобнее превращать не в список объектов кастомных классов, а в список словарей (DICTIONARY) например. А потом вытаскивать по названию языка, но это детали.


Помимо удобства использования это даёт нам удобство перевода. Исправление ошибок, муки выбора надписей.


\\Мы как-то раз недел жонглировали именами ACCEPT, ACCEPT JOB, OK. Представьте какой ад был бы если бы надо было лезть в редактор и везде править названия, а тут геймдизу даже не надо пинать программистов. Сел и поменял поле в таблице.


А также с таблицей могут работать переводчики! Естественно вы не пустите их в код, а вот перевести строки таблицы они вполне способны.


Также бонусом идёт то, что Unity UI (и UI Widget в UE4) поддерживают Rich Text, а значит мы можете сделать шрифты жирными или цветыми прямо в таблице.

Итак, как с этим работать.

Туториалы для геймдева #1 Локализация и Класс Logic Gamedev, Туториал, Мануалы, Tutorialsgamedev, Unity, Программирование, Csharp, Длиннопост

Ну собственно аналогично Logic и StaticData. Заметьте, что мы не передаём язык, о текущем языке всё знает сам Localizer. Он уже выдаст нам текущую строку.


На объекте с текстом висит вот скрипт TextLocalizer, в который мы передаём какие-то значения и он уже сам решает как их заполнить. Например обратите внимание на #VAL0 в строке с золотом. Вот как я с ними работаю:

Туториалы для геймдева #1 Локализация и Класс Logic Gamedev, Туториал, Мануалы, Tutorialsgamedev, Unity, Программирование, Csharp, Длиннопост

Передали список значений, и они сами обновились.


Главное не забудтье в редакторе прописать публичное поле KeyName нужным вам ключом)

Вопрос, а как инициализировать стартовые значения всяких кнопок ОК, EXIT и т.д.


Элементарно,Ватсон!


Вешаем на текстовый объект наш TextLocalizer. Прописываем ему соответствущй ключ. Он при старте вызывает SetValues(null); И текс записался. Всё)

Туториалы для геймдева #1 Локализация и Класс Logic Gamedev, Туториал, Мануалы, Tutorialsgamedev, Unity, Программирование, Csharp, Длиннопост

Ну и последняя заметка - Смена языка. Есть 2 способа, простой и сложный.


Простой: При старте игры игрок выбирает язык, он устанавливается в TextLocalizer и дальше работает всё вышеописанное. После игрок язык уже не может поменять.


Сложный: в Logic создаётся ивент смены языка, и его слушает TextLocalizer, меняет язык в себе и вызывает ивент обновления текстов на интерфейсах. Интерфейсы этот ивент слушают и вызывают SetValues от последних запоменных значений.


Надеюсь это поможет кому-то с архитектурой проекта) Спрашивайте что не понятно) Остался ещё 1 пост наверное)

Показать полностью 6

Туториалы для геймдева #0 StaticData

Привет, Пикабу!

Я тут обещал какое-то время назад серию туториалов для геймдева, ну в общем вот первый пост)

Требования для урока:

1)Мозг

2)Умение читать ОЧЕНЬ ОЧЕНЬ ОЧЕНЬ много текста

3)Умение читать доки

4)c#

5)Json

6)Примеры будут на Unity, т.к. мой проект на нём, но про альтернативу для Unreal расскажу

StaticData. Что это? Зачем оно нужно?

В любом проекте чуть больше "Hello world" появляются объекты которые неплохо бы кастомизировать. Будь то параметры юнитов, оружия, да даже просто ящики разной массы для шутерков.


Если вы составляете карту руками, то вам ещё допустимо создать несколько шаблонов с захардкоженными параметрами и расставить их на сцене. (но всё равно не надо) А вот если вы захотите чуть более сложную архитектуру, или процедурную генерацию, то тут без подгрузки данных из кода не обойтись.

Первым порывом будет написать что-то такое:

\\код не мой, я просто разместил объяву


Код взят из проекта одного из школьников, у которых я веду проекты. По ушам за той код уже отхвачено)



obj1 = new Class();

obj.a = 1;

obj.b = 2;



obj2 = new Class();

obj2.a = obj1.a * 1.05;

obj2.b = obj1.b * 4;


Ну вы поняли...

Это пример того как делать НЕ надо. В приличном обществе любую константу которая влияет на геймплей (а особенно на геймдизайновую его часть) надо бы хранить снаружи кода, чтобы просто изменив поле можно было бы подправить баланс игры.


Опционально, если при инициализации ваш клиент пытается скачать таблицу из облака и обновить баланс игры. Т.е. для обновления баланса игроку надо будет выкачать пару МБ, а не новый билд весом пару сотен метров (некоторые движки не позволяют патчить части себя, а только полностью менять билд).


Так что такое StaticData? Это эта самая таблица, которая иницалзирует сама себя и хранит все значения которые не зависят от действий игрока. А главное, к ней можно обращаться в любой момент.

Туториалы для геймдева #0 StaticData Gamedev, Мануалы, Tutorialsgamedev, Progrmming, Csharp, Json, Unity, Unreal Engine 4, Длиннопост

Ну а теперь ОДНА ИЗ ВОЗМОЖНЫХ реализаций этого.

Unreal engine - Класс Data Table. Идите гуглите) Таблички можно создавать прямо в редакторе, а можно подгружать из csv. Очень удобно и всё такое. И мануалы простые легко гуглятся.


Unity - Тут я собственно на примере буду рассказывать как оно устроено и работает. На примере своего проекта.

Сначала немного о базовых механиках построения таблиц:


KeyName - наше основное значение. Это id. Уникальная строковая переменая, по которой всегда можно найти в StaticData объект.


Каждый лист таблицы занимает или список классов (строка - экземпляр\шаблон объекта), Либо один цельный объект. Примером второго является например Settings. Не настройки игрока, а базовые параметры игры. Для кода сверху, это были бы масса и радиус земли.


Имена переменных должны совпдать с аналогичными переменными в вашем коде.

Итак, как же у меня в игре устроен ОТРЯД СОЛДАТ, а вот так:

Лист называется SquadArchtype

Туториалы для геймдева #0 StaticData Gamedev, Мануалы, Tutorialsgamedev, Progrmming, Csharp, Json, Unity, Unreal Engine 4, Длиннопост

keyName - ключевое имя отряда (по нему например более глобальный класс Company (армия) тащит свои составляющие. Не буду показывать, чтобы не перегружать вас) Дальше идут типы отряда, 6 юнитов, флаг может ли этот отряд быть использован игроком и сила для расчёта мощи армии противника.


Давайте внимательнее посмотрим на юнитов (лист UnitArchtype)

Туториалы для геймдева #0 StaticData Gamedev, Мануалы, Tutorialsgamedev, Progrmming, Csharp, Json, Unity, Unreal Engine 4, Длиннопост

Всё ещё куча ключевых слов и никаких параметров. Заметьте по ключевым словам можно догадаться о чём тут вообще идёт речь! Тут можно заметить поля правой и левой руки, доспеха и активируемого предмета. baseUnit это класс базовых характеристик (а-ля раса, но не совсем). Взглянем например на оружие. (Weapon)

Туториалы для геймдева #0 StaticData Gamedev, Мануалы, Tutorialsgamedev, Progrmming, Csharp, Json, Unity, Unreal Engine 4, Длиннопост

Ого чиселки! Но урона у оружия нет) Вы же не думали что всё так просто? В моей архтектуре удар оружием не отличается от фаербола. Это всё активные способности, некоторые могут иметь или не иметь урон. Глубже в таблицу уходить не будем, думаю смысл понятен)


НО:


Тут заметим интересную вещь. Изменилсь цвета. Зелёный - вотчина геймдизайнера (в данном случае меня) это баланс. Синяя - вотчина художника. Вот например в sprite записаны имена спрайтов которые подгружаются в соответсвующее оружие. О том как и зачем - в следующих урока, но поверьте, удобно)

Аналогичная архитектура записанная в коде заняла бы сотни строк, а меня баланс стало бы вообще нереально.

Самые внимательные могли заметить, что табличка хранится в гуглдоке. Итак, как же нам её оттуда достать.


Можно написать свою хорошую систему (так например у меня на работе, очень мощная штука, но такую систему можно и саму по себе продавать, зачем вам тогда игры). Дома я пользуюсь беслпатным плагином


https://assetstore.unity.com/packages/tools/utilities/google...


Что он делает - выкачивает гуглдок в Json и сохраняет в папке Resurces (для тех кто не шарит, в юнити это такая папка специальная, файлы откуда всегда уодят в билд, даже если на ни нет явных ссылок). Каждый листик сохраняет отдельно. Тут есть свои плюсы и минусы, но в большинстве случаев нам пофигу.

Качаем, ставим, читаем доки по заполнению таблиц, пользуемся.

Туториалы для геймдева #0 StaticData Gamedev, Мануалы, Tutorialsgamedev, Progrmming, Csharp, Json, Unity, Unreal Engine 4, Длиннопост

Прочитали? Ну и славно, едем дальше.

Собственно Static Data.

Есть два варианта - простой и сложный (внезапно)


Сложный - создаём класс с namespace которое всем доступно, инициализируем и тягаем оттуда инфу.


Простой - создаём GameObject на сцене, вешаем на него скрипт StaticData, он при запуске делает тоже самое. Если объекту нужны данные он его пинает и тащит данные.

Чтобы объект загружался из Json, он должен быть серриализуем.

Туториалы для геймдева #0 StaticData Gamedev, Мануалы, Tutorialsgamedev, Progrmming, Csharp, Json, Unity, Unreal Engine 4, Длиннопост

Вот примерно так выглядит класс Weapon (табличка сверху).

Теперь как же его собственно выцепить из таблички? Ну вот примерно так:

Туториалы для геймдева #0 StaticData Gamedev, Мануалы, Tutorialsgamedev, Progrmming, Csharp, Json, Unity, Unreal Engine 4, Длиннопост

Тут сейчас будет немного магии, специально для юнити. Кому не интересно, листают до следующего перерыва на кофе.

Json - в данном случае просто строковая переменная.

LoadResourceTextFile - вспомогательная функция для выкачки текста. вот она:

Туториалы для геймдева #0 StaticData Gamedev, Мануалы, Tutorialsgamedev, Progrmming, Csharp, Json, Unity, Unreal Engine 4, Длиннопост

Странное добавление по бокам - Json встроенный в юньку малось туповат, ему надо явно указывать что это список объектов, а не цельный объект.


Weapons - вспомогательный класс для серриализации. Требуется из-за того-же несовершенства Json. Вот он:

Туториалы для геймдева #0 StaticData Gamedev, Мануалы, Tutorialsgamedev, Progrmming, Csharp, Json, Unity, Unreal Engine 4, Длиннопост

weapons - список оружий с которым позже мы будем уже работать. (точнее сам список в Weapons.list, но не суть).

Туториалы для геймдева #0 StaticData Gamedev, Мануалы, Tutorialsgamedev, Progrmming, Csharp, Json, Unity, Unreal Engine 4, Длиннопост

Итак, мы почти у конца! Что же с этим делать? Ну для начала надо бы написать инициализатор который подтащит по ключевым именам (строкам) уже готовые и ранее серрилизованные объекты.

Туториалы для геймдева #0 StaticData Gamedev, Мануалы, Tutorialsgamedev, Progrmming, Csharp, Json, Unity, Unreal Engine 4, Длиннопост

Легчайше!


Ну а вот собственно например инициализатор оружия:

Туториалы для геймдева #0 StaticData Gamedev, Мануалы, Tutorialsgamedev, Progrmming, Csharp, Json, Unity, Unreal Engine 4, Длиннопост

Собсно что тут делать - дело ваше. У меня например только подтаскиваются пассивные и активные убилки из той же самой StaticData.

Итоги:


Мы получили МОЩНЕЙУЮ систему для хранения и доступа к данным. Которую из-за гуглдока также сложно потерять (ну если вы вдруг не умеете пользоваться гитом).


Пусть это не самый эффективный и аккуратный вариант реализации, но даже он сэкономит вам ТОННЫ времени) Удачи,  до встречи в следующем туториале!

P.S. Да, наконец то! Думал у меня пальцы отвалятся пока пишу! Фуууух)

Показать полностью 12

Перманентный бан по ip целого общежития студентов.

Значит захотел я такой ответить на коммент и вдруг. Фигакс! Пермач! Господи да как-то так!

Перманентный бан по ip целого общежития студентов. Бан, Админ, Обращение к Пикабу

Захожу в список забаненных пользователей.

Перманентный бан по ip целого общежития студентов. Бан, Админ, Обращение к Пикабу

Уже интересно! Посмотрим уведомления

Перманентный бан по ip целого общежития студентов. Бан, Админ, Обращение к Пикабу

Ну ладно, придется заводить твинка чтобы сделать обещанные посты

Перманентный бан по ip целого общежития студентов. Бан, Админ, Обращение к Пикабу

Ого! А бан то походу по ip!

И тут значит сижу я пишу пост с телефона, с мобильного интернета, со своего родного аккаунта) все с ним в порядке) Просто забаненных по ip мое общежитие) несколько сотен пикабушников точно) @admin что делать в таком случае?) Ситуация получилась веселая)

Показать полностью 2
Отличная работа, все прочитано!