Fingercomp
-
Публикации
1 629 -
Зарегистрирован
-
Посещение
-
Победитель дней
283
Сообщения, опубликованные пользователем Fingercomp
-
-
И в самом деле, забыл в Container добавить проверку на nil перед использованием функции patch. Исправил эту багу и удалил ненужную функцию (я тогда думал, как бы получше реализовать гистограммы) в @1.3.1.
Автоматическое масштабирование я делать не стал, так как я не знаю, как нужно оно энд-юзеру. Нужно ли ему, например, вытянуть часть графика за левелом, сделать единый масштаб или как-либо ещё. Так что просто нужно пробежаться по всем значениям и выставить нужные параметры.
local min, max = 0, 0 for _, v in pairs(hist.values) do min, max = math.min(min, v), math.max(max, v) end max = max + (min == max and 1 or 0) hist.min = min hist.max = max
-
Функция вызывается при получении ивента touch, ей передаются параметры ивента. Обработка ивентов происходит во время работы функции event.pull (или os.sleep, которая внутри всё равно вызывает event.pull).
-
-

Прога для тех, кто прочитал мой прошлый гайд по звуковой карте в моём блоге и теперь хочет творить звуки. Потому что вслепую набирать код очень скучно.
Synth - это, наконец-то, внятная гуишка для звуковой карты. Она не умеет сохранять полученную конфигурацию в файл и считывать её оттуда, например. Зато можно с лёгкостью создать что-то монстрообразное и потом перенести настройки себе в код.
Довольно прелюдий. Это прога является огромным монстром, поэтому ниже я расскажу, как ею пользоваться.
1. Установка
Установить прогу можно с помощью oppm или, что лучше (ибо быстрее), hpm.
$ hpm oppm:cache update $ hpm oppm:install synth
Прога весит 40 кБ, но с ней идут 160 кБ либ, поэтому установка займёт энное время.
2. Запуск
Запускать командой synth. Появится красивенькая юишка.

3. Использование
Первоначально на поле (а эта синь как раз является полем) ничего нет. Исправить это недоразумение можно с помощью тыка правкой кнопкой по полю.

Внизу кнопа для закрытия меню, сверху комбобокс, в котором можно выбрать желаемую карточку. Начнём, пожалуй, с канала ("Channel").
После нажатия по нужному пункту появится карточка в месте, где тыкнули пкм.
Таким же образом я создаю карточки "Wave", "Volume", "Frequency".

Сами карточки белые, но у них есть цветные штуки. Эти цветные штуки называются пинами. Те пины, которые находятся снаружи карточки, - выходы (на них обычно ">" или "v" написано); которые внутри карточки, - входы. Разноцветные они не просто потому, что мне захотелось, а для помощи. Каждый выход можно подключить ко входу только с таким же цветом.
А как подключать-то? Изи: сначала тыкнуть по выходному пину и затем по любому подсвеченному входу.
Таким же образом можно отцепить два пина, если они уже подключены друг к другу.

Соединения видны глазом даже без какого-либо вооружения.

Настройки, которые мы скормили каналу, не особо впечатляют, прямо скажем. Синусоида, 99.99% громкости, 440 Гц частота. Пф.
И это недоразумение тоже фиксится правым кликом! Только теперь по карточке. Например, по карточке "Wave".

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

Так-так-так, что-то скучновато просто цеплять и отцеплять картонки.
Во-первых, их можно таскать по полю: зажать по белой части и потом двигать в тёплые страны.
Во-вторых, можно таскать поле: зажать по его свободной части и подвигать.
В-третьих, мы можем создать карточку "Sound card". Как ни странно, эта карточка смотрит, что вы к ней подключили, и на основе увиденного ужаса генерирует звук.
Для этого её заспавним где-нибудь, а затем к любому из пинов (не столь важно, к какому именно, это ни на что не влияет) подключить канал.

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

Если долго эту какофонию слушать, могут отпасть уши, поэтому вместо звуковой карты - её безжалостно удаляем - саммоним график.

Особо тут расписывать нечего, вообще. Так же без разницы, куда подключены каналы; через пкм можно настроить зум.
Попробуем теперь поиграться с модуляцией. Сначала амплитудная: она попроще. Подключаем канал, который будет модулировать (например, первый), к пину "AM" другого канала.

Красота. Даже на график не влезает. Хотя особой проблемы тут нет: как видно, рисуется график не очень красиво (я потом надеюсь это как-нибудь поправить), но представление о виде волны есть. Неплохо, на первый взгляд. Ровно до того, как вы подключите оба канала к звуковой карте.

Теперь давайте устроим тотальную частотную модуляцию. Саммоним частотный модулятор, к вернему пину подключаем модулирующий канал, а выхлоп ведём к пину "FM" на другом канале.

Звучать оно сразу стало иначе. Можно поменять интенсивность модуляции и частоты на каналах.

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

Так можно наглядно подобрать желаемые значения для этой огибающей.
Собственно, это и все карточки, которые есть в этой программе. Ставьте, играйтесь и радуйтесь. А как наиграетесь со звуковой картой, можно выйти из программы (через Ctrl-C) и заняться серьёзными вещами.
P. S. Сырцы лежат на OpenPrograms (где б им ещё быть?): https://github.com/OpenPrograms/Fingercomp-Programs/tree/master/synth
-
16
-
-
Как я понял, в messarr хранится строка до пробела и строка после; в params - до запятой и после запятой.
Тут всё довольно просто. Как-то так примерно. Я тут приблизительно код данный привёл.
local messarr = {msg:match("^(%S*)%s?(.*)$")} if messarr[1] == "&say" then if checkAccess(user, ACCESS_LEVELS.Moderator) then local params = {messarr[2]:match("^([^,]*),(.*)$")} say {user = params[1], message = params[2]} end end -
Попробовал эту либу. Торжественно заявляю, что она невероятно охрененная. Что самое охрененное - она юзает doubleBuffering, благодаря чему я смог её заюзать даже в середине написания проги, когда любая другая либа бы дала сбой. Очень мне понравился набор компонентов, а также возможность на изи добавить свои.
Пожелания, сформировавшиеся во время использования либы:
- Метод :destroy для всех объектов либы, рекурсивно удаляющий объект и его дочерние. Хотя, мб, он и есть, но я не заметил.
- Поддержка Lua 5.3. Решается банальным пиханием math.floor(var + 0.5) перед битовыми операциями. Насколько я помню, пришлось пропатчить всякие методы типа HEXtoRGB в либе color.
- Ресайз лейаута. Сейчас там строки и столбцы забиты при создании, что не особо удобно, когда, например, объект лейаута передаётся в какой-нибудь метод, общий для нескольких классов, для изменения. Пока решается прибитием гвоздями контейнера посередине, созданием новго контейнера в оставшемся месте и передаче уже его в метод, который может там сам добавить лейауты, сколько влезет.
- Скроллинг в комбобокс. У меня просто крашилась прога, когда размер комбобокса превышал размер экрана.
- Не трогать папку /lib совсем. Вместо этого класть все либы в /usr/lib. Это касается инсталлятора. Либа сериализации, например, затирала системную, из-за чего все программы, которые её юзали (а их было довольно дофига), просто крашились. Даже lua. Вряд ли так было сделано специально, но чтобы не случалось такого в дальнейшем, лучше всё же перетащить.
- Я бы также подумал над подключением репы с прогами к OpenPrograms: создать файл programs.cfg, прописать пакеты и пути к файлам, а затем тыкнуть Vexatos, чтобы он добавил репу в список. Я, например, пишу в репу на OpenPrograms свои программы и стараюсь избегать использования всех либ, которые огромные, но не присутствуют в OpenPrograms. Потому что, например, моя программка - это 40 килобайт кода, а либы, которые приходится бандлить вместе с нею, - это 160 килобайт. На каждую прогу тянуть по 160к килобайт - это слишком.
-
4
-
Unreal Tournament: Resurrection -- Этап #2 завершён.

Победители:
- Первое место: @Totoro.
- Второе место: @FluttyProger.
- Третье место: @LeshaInc.
@astral17 на четвёртом месте, так как не явился на финальную битву.
Спасибо за участие!
-
4
-
Завтра один из участников будет занят, поэтому решающая битва переносится на день вперёд, 2017-04-30 в 12:00 UTC.
UPD. С момента опубликования дата изменилась.
-
Спасибо за наезд на организаторов. Жаль, не сказали пилить сайт для магазина трусов. Полезнее же, чем аааа супер сложные баттлы для Дуба и аааа ужасно скучные баттлы для Квертика делать. Особенно полезен наезд через полторы недели после ивента.
Я, конечно, подумаю, что пилить на последний этап. Полгода есть. Но теперь мне как-то всё больше хочется просто покемонов заспаунить и заставить людей ловить их. Квертик придумает офигенную стратегию заодно. И скучно не будет. И порог вхождения минимальный. Я же о людях должен думать, так?
-
А если бы да кабы...
Хочешь либу - пиши нужные методы. Как напишешь - поймёшь, что OC/OpenOS уже сто лет как все "базовые функции для управления" имеет.
Ты же сам даже ни в одном этапе не поучаствовал. Что тогда за всех участников отдуваешься?
-
Ну если хочешь, пиши программу на третий этап и делай там стратегию нужную. Я бы посмотрел на это. А то ребята и с базы выехать не смогли 15 апреля, а ты тут про секторы, главнокомандующих и группировки говоришь

-
1
-
-
Ну мы эволюционируем потихоньку. Сначала тест алгоритмов пути, потом препятствия. В следующем этапе можно какой-нибудь лабиринт зафигачить или что-то типа этого. Посмотрим. Есть полгода на придумывание чего-то действительно интересного.
-
Ну естественно, что в кубаче работать ну будет. Интернет-карта же у нас мгновенно подключается, да?
Нет.
И .read у нас читает сразу все эн мегабайт?
Ну ясен пень, что нет.
Так как топик дублирован вместо апа пршлой темы, я из принципа здесь не буду отвечать. Только скажу юзать циклы и перед использованием проверять finishConnect.
-
1
-
-
Не верю! Если только так:
table.sort(scores, function(lhs, rhs) return lhs[2] >= rhs[2] end)
Остальное, вроде, должно работать.Да, очепятался. Люблю это делать.
Поправил.
-
1
-
-
Итак.
Дано:
Файл формата "НИК,ОЧКИ" по строку на каждую запись.
Путь к файлу: /etc/scores.csv
Задача:
Прочитать файл, отсортировать по очкам и вывести первые 3 записи.
Решаем!
Во-первых, прочтём файл. Так как у нас всё по строкам, можно использовать функцию io.lines. Т.е. что-то типа такого потребуется:
for line in io.lines("/etc/scores.csv") do -- здесь обработчик endСтроку надо разделить на две части, побив на запятой. Здесь нам помогут шаблоны.
Выглядеть это будет как-то так:
local player, score = line:match("^(.*),([0-9]+)$") -- score у нас будет в виде текстовой переменной, поэтому переведём её в числовую score = tonumber(score)Строку разбили, теперь надо её отсортировать. Сходу мы это сделать не сможем, надо добавлять значения в массив.
Вне цикла создадим массив scores, а внутри цикла будем туда помещать пары "ник-очки". Как-то так:
local scores = {} for line in io.lines("/etc/scores.csv") do local player, score = line:match("^(.*),([0-9]+)$") score = tonumber(score) table.insert(scores, {player, score}) endИтак, с чтением из файла разобрались.
Теперь надо отсортировать таблицу. Если бы это была просто таблица типа {1, 100, 25}, мы бы могли воспользоваться table.sort. Но у нас в качестве значений таблицы ещё одни таблицы. То есть так: {{"Vasya", 100}, {"Ivan", 121}, {"moo", 9}}.
Обратимся к мануалу:
Sorts list elements in a given order, in-place, from list[1] to list[#list]. If comp is given, then it must be a function that receives two list elements and returns true when the first element must come before the second in the final order (so that, after the sort, i < j implies not comp(list[j],list)). If comp is not given, then the standard Lua operator < is used instead.
Note that the comp function must define a strict partial order over the elements in the list; that is, it must be asymmetric and transitive. Otherwise, no valid sort may be possible.
The sort algorithm is not stable: elements considered equal by the given order may have their relative positions changed by the sort.
Ага! Можно задать функцию, которая будет сортировать элементы.
Работает она так: функции передаётся пара элементов, а она возвращает false, если нужно их поменять местами.
Когда нам не нужно менять элементы местами? Когда элемент слева больше или равен элементу справа: нам же нужно отсортировать от большего к меньшему. То есть сделать что-то вроде оператора >=, который будет сравнивать очки.
Почему бы и нет. Вот как это будет выглядеть:
table.sort(scores, function(lhs, rhs) return lhs[2] >= lhs[2] end)
Здесь я использую безымянную функцию, которая сразу передаётся в table.sort, чтобы не городить код.
Теперь нужно просто выввести первые три записи на экран.
Воспользуемся очень удобной функцией table.concat, которая возвращает строку, склеенную из элементов переданной таблицы, используя в качестве разделителя данным символ (например, table.concat({"hello", "world", 42}, " ") вернёт "hello world 42"):
for i = 1, 3, 1 do -- Может случиться так, что в файле будет меньше 3 строк, -- поэтому проверяем, что мы не вышли за пределы. if not scores[i] then -- Если всё же вышли, то прерываем цикл. break end print(table.concat(scores[i], ",")) endЗадача выполнена. Итоговый код:
local scores = {} for line in io.lines("/etc/scores.csv") do local player, score = line:match("^(.*),([0-9]+)$") score = tonumber(score) table.insert(scores, {player, score}) end table.sort(scores, function(lhs, rhs) return lhs[2] >= lhs[2] end) for i = 1, 3, 1 do if not scores[i] then break end print(table.concat(scores[i], ",")) end-
6
-
-
Обновление от 15 апреля 2017 года. Последнее.
Эпично. Так закончилась история со второй главой Unreal Tournament: Resurrection. Потому пора подвести итоги.
Выражаю благодарность всем тем людям, которые так или иначе участвовали в разработке этого ивента.
Организаторы
@Fiender. Он был хостером всего ивента. Сделал сервер, сделал из набора модов нормальную сборку, собрал клиент (очень много изменений в нём, отрезал многие штуки ненужные), подключил лончер и сервер авторизации.
По сути, на пару с ним работал и я. В мои заслуги можно записать софт, карту, геймплей, правила, обсуждение и так далее.
@Totoro - автор оригинальной идеи, участвовал в обсуждении, помогал выбирать рациональные решения.
Участники
@astral17. Начал пилить программу за час-полчаса до старта, но, тем не менее, даже с такой прогой он победил, потому что выбрал самый рациональный путь к победе.
@Totoro. Начал пилить прогу этой ночью, в итоге роботы агрились друг на друга, но не смогли правильно рассчитать угол пушки, поэтому так и не получилось полностью экстерминироваться.
@FluttyProger. Написал единственных роботов, которые отъехали от базы. И хотя в последнем раунде его роботы к чёрту перестреляли друг друга сразу после старта, получилось довольно забавно и прикольно.
Прочая помощь
@Doob. Нарисовал фон для лончера. Сделал прошивку для бомб, правда, мы заменили микроконтроллеры потом на отдельный блок из мода.

Над этим ивентом мы работали 51 день. Прошли от обсуждения видоизменения первой части до сразу двух ивентов.
Сейчас я невероятно устал, конечно. И, подумав, решил, что снова мучаться в таком же режиме над UT#3 никому не хочется.
Поэтому заключительный этап Unreal Tournament: Resurrection будет проходить в конце года. Начнём где-нибудь в середине осени и закончим к январю-февралю.
Что же дальше? Это ещё предстоит выяснить. У нас есть полгода на то, чтобы продумать идею для третьего этапа.
Как обычно, первыми о грядущих ивентах узнают люди на нашем IRC-канале #cc.ru @ irc.esper.net.
Погодите. А где места?
...
После некоторого обсуждения, решено было убрать какие-либо места в рамках этого ивента.
Почему?
У нас не получилось боя, как такового.
Все роботы были невероятно забагованы. Победа зависела бы не от алгоритма, а от удачи, чего, конечно, я не хочу совершенно.
Но что за ивент без мест и призов? Поэтому 29 апреля, в субботу через 2 недели, состоится ещё одна битва роботов. С теми же правилами, с тем же софтом, на той же карте, на той же сборке и на том же сервере.
Однако теперь у участников есть 2 недели на то, чтобы всё основательно подготовить в своих программах. У них сейчас имеется абсолютно всё, чтобы сделать нормальных роботов, которые осмелятся выползти с базы, отрефакторить в спешке написанный код и дописать недописанные фичи.
Надеюсь, участники подготовят своих воинов и выйдут сражаться в гораздо более интересном бою.
Спасибо за то, что следили за ивентом, задавали вопросы, участвовали в обсуждении. See ya!
P. S. Если есть видео с ивента, просьба поделиться ими здесь.
-
4
-
-
Открою секрет. На каждой ветке были задействованы компы.
-
Чекпоинтов быть не должно. Вообще. Но меня задолбали игроки: пришло всего 6 человек и не хотелось и этот народ растерять из-за сложности ветки.
Когда придумывалась ветка, предопалагалось, что люди смогут додуматься до того, чтобы не всем переться до конца, а только тем, у кого-то идеально работает клиент. А на задачах скооперироваться. Писать текущие решения. Типа мозгового штурма устроить.
Они не задумывались быть лёгкими. Иначе бы не на 4 часа рассчитывал.
Но людям, конечно, пофигу всё. На белой ветке нытьё-нытьё-нытьё, мат-перематы и прочее. На красной ветке не додумались, что кнопки открывают проходы в лабиринте. На синей ветке вообще не знали даже, что значит оператор -=, заявляли, что они не программисты, и нечего их так мучать. Ветки целые скипали.
А на боссе никто не смог банально сделать очередь, все перелись потыкать по экрану. Прямо как будто пятилетки, которые ревут из-за того, что не могут поделить игрушку на двоих.
Как обычно, там должно было быть гораздо больше, но не было времени. Не могу я одновременно модерировать сервер, канал, делать софт, собирать сборку, пилить офигенные игры, думать над реализацией, строить, изучать компоненты, писать обновления, отвечать на вопросы, разрешать всякие конфликты одновременно, и при этом сделать всё идеально. Так что имеем то, что есть.
Я невероятно разочарован. Вся надежда теперь на робобаттл.
Сегодня, в 11:30 UTC / 14:30 MSK, заходите на сервер. У нас в запасе есть генерация бомб, роботы, пушки, зарядные станции, арена, поле боя, ограничение по энергии. До тридцати двух роботов на раунд. Must be fun.
-
Вообще-то этим занимается клиент.
Это тут к чему?
-
Поздравляю. Вы стали первым участником, решившим измерять "лагодромность" сборки на карте из тысяч блоков с соединёнными текстурами, динамиками из CX и всякими обновлениями блоков частыми.
Сегодня у нас в разы меньшая карта (буквально 50x50 блоков), роботы, пушки, бомбы, всякие стрелялки. Количество участников неизвестно. От одного до трёх. Посмотрим.
Расписание на сегодня написано в предыдущем обновлении. Ориентируемся уже там.
P. S. Были вопросы о том, можно ли перенести ивент. Отвечаю: нет, перенос уже невозможен. Я специально перенёс все свои дела как можно раньше, чтобы 100% присутствовать на ивенте. На следующих выходных есть высокая вероятность, что я буду занят. Дальше ванговать не буду.
-
Первый день завершён.
- ??? Он же на 4 часа рассчитан!
Именно. Первый день - это была секретная часть. Мир состоял из 4 частей, или веток. В каждой была своя фишка.
Сначала мы смотрели фильм на компьютере, пока ждали народ. После небольшой сумбурненькой речи я открыл белую ветку.
Белая ветка - это паркурчик с движущимися платформами. И тут и начались проблемы. Из-за того, что существовала угроза поджога стульев под игроками, а нам не хотелось терять участников, пришлось скипать части ветки. Доскипались до конца и перешли на красную ветку.
Красная ветка - это лабиринт с дверьми и плитами. Игроки быстренько его осилили, к счастью, и перешли к синей ветке.
Синяя ветка - это 3 задачи на знание программирования, кубача, ну и на логику. Вот эти задачи, вместе с решениями и ответами.Задача #1.
uint8_t biome; biome -= 0o55; printf("%d", biome);Здесь всё нереально просто, но игроки не поняли.
Карта находилась в биоме "The Void" - в кубаче этот биом имеет ID 127 (кстати, это поняли). biome - это, по сути, переменная, содержащая 127.
Следующая строка расшифровывается как biome = biome - 0o55. 0o55 - это восьмеричное число, в десятеричной системе счисления это 45. Вычитаем: 127 - 45 = 82.
Последняя строка принтит число в десятичной системе счисления, то есть 82.
Ответ: 82.Эту задачу "решил" @Sharplook брутфорсом, перебирая все значения.
Задача #2.

Мммм, как похожи записи внизу и справа на Regex...
Знакомьтесь: это Regex-кроссворд. Значения строк должны соответствовать регексам справа, значения столбцов - регексам внизу.
Разбирать, как собирать этот кроссворд, я не буду, потому что это займёт тонны текста. Кроссворд решается вот так:1011 0001 0011 1101
Слева также есть таблички типа "A=0b", "B=0b", ... Их суть заключается в том, что к концу этих записей надо добавить значения строк слева направо. То есть,
A=0b1011 B=0b0001 C=0b0011 D=0b1101
Внизу справа финальная табличка. Её суть: представить A, B, C, D в виде шестнадцатеричных чисел (0...F) и в порядке алфавита вывести. Получим B13D. Это и есть ответ.
Ответ: B13DЭту задачу скипнули после 10-14 минут из-за нытья. Фейл.
Задача #3.
1 [1] GETTABUP 0 0 -2 ; _ENV "date" 2 [1] LOADK 1 -3 ; 2017 3 [1] LOADK 2 -4 ; 4 4 [1] LOADK 3 -5 ; 15 5 [1] CALL 0 4 2 6 [1] GETTABLE 0 0 -6 ; "dayOfYear" 7 [1] CALL 0 1 2 8 [1] SETTABUP 0 -1 0 ; _ENV "a" 9 [2] GETTABUP 0 0 -7 ; _ENV "print" 10 [2] GETTABUP 1 0 -1 ; _ENV "a" 11 [2] CALL 0 2 1 12 [2] RETURN 0 1
Это это вывод команды luac. Надо было по ней восстановить код.
Но тут не нужно даже знать это. Всё быстро восстанавливается.
Первая строка - "date". Какая-то дата, значит. Дальше 2017, 4, 15... Похоже на дату, не так ли? 15 апреля 2017 года. Дальше "dayOfYear" - день года. Тут надо подумать было и понять, что это есть порядковый номер дня в этом году. И "print" - принтить.
Итого надо вывести порядковый номер дня 15 апреля в 2017 году. Банально загуглив, находим ответ: 105.
Ответ: 105.Задача была скипнута из-за нытья, да. Фейл.
Итого вся ветка синяя была завалена. Ну да ладно.
Далее у нас был "босс" - это игрушка от @ECS (:P) Flappy Bird. Цель: набрать 20 очков. Игроки мешали друг другу, так что ничего не собрали. Скипнули.
А дальше... Ну это, вообще-то, всё. Если бы люди знали программирование банально, прошли бы синюю ветку. Если бы имели терпение, прошли бы белую ветку и босса.
Я остался достаточно опечален итогом. Ну да ладно, не всю жизнь горевать.
Завтра ждём вас на том же сервере. Будет битва роботов.
@FluttyProger сказал, что доделает прогу до завтра, про @astral17 не знаю. Посмотрим.
Смотрите прошлые обновления, там расписание и инструкции.
-
2
-
-
Обновление от 14 апреля 2017 года. Старт через пару часов.
Расписание
2017-04-14 09:00 UTC 2017-04-14 12:00 MSK : Подготовка к запуску.
2017-04-14 10:00 UTC 2017-04-14 13:00 MSK : Отключение вайт-листа.
2017-04-14 12:00 UTC 2017-04-14 15:00 MSK : Старт ивента.
2017-04-14 16:00 UTC 2017-04-14 19:00 MSK : Конец первого дня ивента.
2017-04-15 11:00 UTC 2017-04-15 14:00 MSK : Подготовка ко второму дню ивента.
2017-04-15 11:30 UTC 2017-04-15 14:30 MSK : Отключение вайт-листа.
2017-04-15 12:00 UTC 2017-04-15 15:00 MSK : Старт второго дня ивента.
2017-04-15 14:30 UTC 2017-04-15 17:30 MSK : Конец второго дня ивента. Заключение.
2017-04-15 15:00 UTC 2017-04-15 18:00 MSK : Конец ивента.
Работает иркомост для сервера: канал #unrealtourres на сервере irc.esper.net
Оперативная информация будет на нашем канале IRC: #cc.ru @ irc.esper.net
Вебчат на оба канала: http://webchat.esper.net/?channels=#cc.ru,#unrealtourres
Ссылки на стримы искать нужно будет на IRC-канале. Если не забудем, то в чате тоже дадим ссылки, но тут от удачи зависит. Этот пост я могу к чертям сломать, если буду редактировать, поэтому тут их ждать не надо.
Если лончер не запускается, обновите жаву до последней (Java 8 build 112).
Have fun!
-
3
-
-
Вы бы ещё за 3 минуты до старта сказали. Никто - даже Тотора - не сказал мне, что в пятницу нельзя.
Так что сорри, но переносить некогда. Будут стримы, можете там посмотреть. Но лучше таки зайти, если возможно. Оно будет только один раз.
-
Обновление от 13 апреля 2017 года. Стартуем завтра.
В связи с этим напоминаю, как попасть на сервер.
1. Зарегистрируйтесь на сайте
Ссылка: https://ut.fomalhaut.me/
Сверху меню навигации, зарегайтесь и аутентифицируйтесь.
Не обязательно тот же пасс, что и на форуме (и вообще, лучше другой).
2. Скачайте лончер
Лончер был обновлён (сменился домен), поэтому все должны перекачать его.
Ссылка: https://ut.fomalhaut.me/static/UT-Launcher.jar
3. Запустите лончер
4. Настройте клиент
Можно выделить побольше памяти, например.
5. Впишите логин и пароль
Те, что указывали при регистрации на сайте.
6. Нажмите "Играть"
Ивент-сервер будет доступен для игроков за 2 часа до старта!
То есть зайти можно будет уже с 10:00 UTC13:00 MSK. Но начнём мы всё равно в 12:00 UTC15:00 MSK.
Что будет происходить на ивенте самом, я не буду пока рассказывать. Будет небольшой загадкой.
Нам нужны стримеры. В запасе , но мы пока не смогли протестировать качество трансляции. Если кто-то имеет возможность постримить, дайте знать. В чате, в ЛС, в ирке, в топике. Не столь важно, лишь бы знал я.
Казалось бы, куда ещё позже. Но мы, наконец-то, сделали бомбы для ивента. С сигнальными не заморачиваемся, в общем. Робот ставит, тыкает по бомбе и дерёт оттуда as fast as it can.
Танкистам повторю, что ивент разделён на 2 дня: завтра будет секретная часть, а послезавтра сама битва.
Завтра будет опубликовано ещё одно обновление, где дам чёткое расписание. Пока что основными каналами связи остаются ирка, чат, ЛС и топик.
Лично жду каждого на сервере. Должно быть весело.


GPS за "Спасибо"
в Выполненные заказы
Опубликовано:
Не, , хватит повсюду оффтопить. Не знаешь - молчи.
Автору: гугл вам в помощь, либа же реально в самых первых ссылках. http://computercraft.ru/topic/1951-gps-oc/