Fingercomp
Гуру-
Публикации
1 629 -
Зарегистрирован
-
Посещение
-
Победитель дней
283
Тип публикации
Блоги
Профили
Форум
Багтрекер
Магазин
Все публикации пользователя Fingercomp
-
Как и написано в доках, оператор # возвращает любой элемент, не равный nil, если следующий равен nil. Какой именно вернёт — это уже зависит от положения таблицы в памяти и способа наполнения (например, #{[1]=1, [2]=2, [4]=4, [6]=6} равен 6, а если объявить сначала таблицу, а потом уже заполнить: a[1] = 1, a[2] = 2 и т. д., то #a будет равен 4). Хорошо хоть, что нечисловые элементы не влияют. А решение просто: не юзайте оператор, если не работаете с последовательностями.
- 21 ответ
-
- 4
-
-
Что? Почему в топике "парсинг HTML [разметки]", а в ОП "помогите с кодировкой 1251 разобраться"? Различие между HTML и кодировкой понятно же? Ну я надеюсь. Надо определиться с вопросом и пояснить, что именно нужно. Либу для парсинга HTML, транслятор Win-1251 -> UTF-8, ...?
-
Отличные вопросы и идеи! Арену я хотел обсудить сегодня как раз, но Тоторы нет, поэтому пока не могу ответить. Препятствия будут какие-то, конечно, так как просто бегать по прямой — это слишком скучно. Игроки будут находиться на спектаторской площадке с монитором сервера и видом на поле. Так что не смогут никак вмешиваться. Хотя можно добавить возможность как-то влиять на игру. Так веселее будет даже. Отличная идея, подумаем. Ну как-то мне не слишком нравятся динамические контрольные точки. Надо попробовать придумать как-то спаунить микроконтроллеры без большой возни с NBT. Хм, тогда, в принципе, можно сделать автоматическую смерть команды при отсутствии на радарах более пяти минут, например. Пойдёт, я думаю. Остальные три проблемных вопроса можно (и даже нужно, наверное) решать позже, когда сделаем арену и правила. Завтра обновлю топик, чтобы добавить эти комментарии. К слову говоря, правила финализировать вынуждены позже. Сейчас то Тотора пропадает, то мне некогда особо этим заниматься — никак не получается собраться. В этом одна из причин растянутой подготовки.
-
В прошлые два раза я узнавал всех, кто, всё-таки, будет участвовать в ивенте, через час после начала. Так что мне на этот счёт волноваться бессмысленно. Не знаю, почему бы и не поучаствовать. Скорее всего, дадим более-менее удобные средства для дебага, на подготовку будет дано несколько месяцев (не собираемся спешить в этот раз), да и ивентов с дронами не было ещё. Плюс, правила не слишком сложные.
-
Сегодня-завтра будем набрасывать предварительные правила, чтобы можно было уже начать делать сборку, клиент, арену и софт — ну всё мясо, в общем. Если есть идеи какие-то (по поводу правил хорошо, но проблемные вопросы потому и остаются проблемными, что на них не ответили пока, поэтому на них акцент делаем), мы с Тоторой просим их сюда смело отпостить. Наверняка это поможет сделать ивент веселее, и даже если мы не возьмём всю идею целиком, частично она может повлиять на процесс. И если мы говорим о начале стройки арены, то важнее становится вопрос о том, кто будет пилить (или помогать пилить) карту для ивента. Бонусы: медалька организатора, почётная благодарность и глазоприятный ивент.
-
Samples — количество измерений. В плоттере замеряются значения функции с шагом в (1 s)/Nsamples. В [PCM out] это будет частота дискретизации PCM/WAV-результатирующего файла. В блоге рекомендую глянуть обзор звуковой карты, чтобы как-то попроще стало, — особенно третью часть. Цветные линии толком сделать не получится красиво. Это же брайль. Если две линии пересекутся, то всю клетку придётся красить в интерполированный цвет.
-
Майнинг... Держите меня семеро. Сначала день допрашивать, как разрешить только опенкомпам на сервер запросы отсылать, запретив любым другим прогам (в том числе курле всякой), и игнорить ответы; теперь релизить полупрогу с полукрипто полувалютой. Упорный, однако.
- 22 ответа
-
- 1
-
-
- client-server
- php
-
(и ещё 1 )
Теги:
-
Не работает event.shouldInterrupt()
Fingercomp ответил в вопрос Laine_prikol в Разные (отсортировать)
Слишком критиковать не стоит. Опенось новая доступна тоьлко в дев-билдах, как уже сказано, а не в стабильном релизе каком-нибудь. Посмотрим, что придумает он с этим. P. S. Хотя согласен, что как-то тупо сначала удалять фичу, а потом думать, как её вернуть. -
Не работает event.shouldInterrupt()
Fingercomp ответил в вопрос Laine_prikol в Разные (отсортировать)
В версии OpenComputers 1.6.2 OpenOS протух капитально. Нужно использовать дев-билды. И это изменение — не ерунда ни коим разом. Очень даже удобно, что если где-то доигрался с computer.pullSignal, можно всё равно остановить программу. -
Не работает event.shouldInterrupt()
Fingercomp ответил в вопрос Laine_prikol в Разные (отсортировать)
local function pullEvent(...) local result repeat result = table.pack(pcall(event.pull, ...)) until result[1] return table.unpack(result, 2) end Как-то так. Или можно подождать, пока payonel не запилит обработку сигналов. -
Весь смысл Unreal Tournament, повторяя третий этап подряд, в отсутствии участия со стороны человека по время раундов. По сравнению с другими ивентами на UT рекордное число участников :P
-
В планшете только беспроводные возможности ред-карты работают. Это логично же. Используй redstone -f <freq>, чтобы задать частоту ред-сигнала, и redstone -w <value>, чтобы на этой частоте установить силу сигнала какую-то.
-
С летающими коровами будет слишком похоже на первый этап. Я это уже рассматривал. P. S. @Alex, жду модерку.
-
Охайо! Полгода назад мы проводили второй этап Unreal Tournament (топик). Это был трейнврек, но весёлый, — этап звался Deathmatch, к слову. Роботы пытались друг друга перестрелять (могли ещё взорвать, но никто так и не заюзал бомбы). Но четверо участников пришло, был треш, угар и много стрельбы. :P Пришло время открывать обсуждение третьего этапа Unreal Tournament: Resurrection — и он будет последним в трилогии. Этап 3: Dominance Feat. drones! Проводить будем зимой (февраль?). На подготовку тогда имеем 5 месяцев. Участники третьего этапа: @Totoro, @FluttyProger. Зареквестить участие можно: в ЛС @Fingercomp или @Totoro; в этой теме; сообщением в IRC (#cc.ru или в ЛС fingercomp или Totoro). Команда UT#3: @Totoro — дизайнер, специалист по связям с правительством, пиарщик и просто очень хороший человек. @Fingercomp — кодер, горе-строитель, админ серва, прожект-менеджер. @Fiender — хостер, админ серва. @LeshaInc — кодер. Правила Правила третьего этапа нереально просты. В общих чертах TL;DR: Захват и удержание карты дронами. Арена для этого этапа представляет собой просторную закрытую карту. Карта поделена на условные секторы. В каждом секторе стоит контрольная точка, представляющая собою микроконтроллер, в котором установлена беспроводная сетевая карта с небольшой силой сигнала. В раунде участвуют четыре игрока. Каждый игрок управляет командой из четырёх дронов. За командой закреплен какой-то цвет. Дроны имеют возможность захватывать контроль над секторами карты. Для этого им необходимо завладеть контрольной точкой сектора. После захвата точки она окрашивается в цвет команды, также как и весь сектор. Победные места распределяются по количеству захваченных точек. То есть по проценту территории, которую команда удерживает за собой на карте. За порядком на арене и игровым процессом, как всегда, следит игровой Сервер. Координаты всех важных объектов на карте обозначаются вейпоинтами. Захват точки Для захвата точки дрон должен подлететь к ней на достаточно близкое расстояние и послать сообщение Серверу. Процесс захвата разбивается на несколько пакетов. На который сервер будет отвечать с некоторым делеем. Это даст шанс другим дронам помешать захвату. Например, если у точки висят два дрона и шлют пакеты с одинаковой скоростью, то захват замирает. Дроны взаимно уничтожают прогресс друг друга. Теперь дело можно сдвинуть с мёртвой точки только подогнав ещё одного дрона на помощь. Зарядка В качестве дополнительной геймплейной фишки, можно добавить станции зарядки — места, где дроны должны будут восполнить запас энергии. Иначе дроны сдохнут, и команда проиграет. Визуализация рейтинга Для того чтобы наблюдать за процессом было интереснее, можно повесить на видном месте динамическую карту локации. На ней отрисовать схему арены. Отобразить контрольные точки и сектора, окрашенные в цвета команд, которые их в данный момент удерживают. Точки, которые подвергаются захвату, отобразить мерцающими. Опционально добавить к этому топ команд по количеству секторов и проценты захвата. Условия конца игры Будет три раунда. Раунд завершается при любом из этих событий: Прошло 15 минут и командами захвачены все точки. Три из четырёх команд успешно сдохли. Прошло 30 минут с начала раунда (это на случай пьяных дронов). Технические детали На сервере ждите из модоверсий: Ядрёные моды MC 1.12.2 SpongeForge 7.what.ever Регулярные моды OpenComputers 1.7.0 OpenGlasses 3.3.3 Computronics 1.6.5 Chisel 0.0.13.23 Плагины Antimony LuckPerms Арена будет доступна заранее, контрольные точки будут находиться в фиксированных позициях. С поиском пути в этот раз париться не нужно: дроны двигаются по прямой. Дроны будут иметь одинаковую конфигурацию. Прошивка на дронах будет скачивать саму программу с сервера, куда, в свою очередь, код будет заливаться с компьютеров участников в их кабинках. To Do Как обычно, перед ивентом нужно основательно поработать над его подготовкой. ✅ Доработать правила. Помогайте, оставляя свои мысли в постах в этом топике. ❎ Собрать игровой сервер. Это означает договориться с хостом, закончить пляски со сборкой и выложить её. ❎ Построить арену. ❎ Написать софтверную часть. ❎ Набрать участников. ❎ Провести игру. Проблемные вопросы Остаются ещё несколько проблемных вопросов, которые нужно будет решить по мере разработки проекта. 1. Какая прошивка будет на дронах? Она не должна ограничиваться тупо скачкой проги с сервера. Нужно написать какие-нибудь дебаг-инструменты (например, рестарт). 2. Какая комплектация у дронов? Нужно основательно продумать её, потому что дроны довольно лимитированы по компонентам. 3. Какие настройки энергии установить? Дроны не должны мочь без подзарядки летать весь раунд, иначе не будет толка в зарядниках, но и вырубаться после минуты полёта — это крайность. Нужно отрегулировать скорость зарядки, чтобы не висеть там всю игру. Все программы должны в среднем есть схожее количество энергии. Q&A В топике задают очень важные вопросы, которые поясняют концепт, но ответ на них бывает трудно встроить в текст так, чтобы было заметно. Поэтому ниже будем писать их вместе с ответами. Могут ли участники самостоятельно контролировать дронов во время игры? Нет. После старта дроны становятся полностью автономными. Мы не собираемся менять это — автономность является ключевой фишкой UT:R. Не исключено, однако, что дронами можно будет управлять в других ивентах и сериях ивентов, которые мы, может быть, будем проводить. Будет ли возможен перезахват сектора? Да, конечно же. В этом и весь интерес и интрига. Команда может дружно спать, а за минуту до финала внезапно вылететь и перезахватить все контрольные точки на карте. Разные чудеса случаются, да. Можно ли захватывать одну точку всей командой? Да, можно. Так процесс пойдёт куда шустрее. Как определять цвет дронов и их наличие для статистики на главном мониторе? Цвет дронов определяем перекличкой в начале игры. Сервер запоминает соответствие цвета к модему, с которого прилетело сообщение. Наличие определяется периодическим пингом дронов. Как будут захватываться секторы арены, конкретно? Мы берём концепцию @eu_tomat. Каждая точка имеет уровень захвата. Если он равен нулю (а при старте игры именно так и будет), точка считается нейтральной. У точки небольшой радиус модема, поэтому дроны должны быть очень близко к ней. Для начала захвата дрон должен поймать сообщение от точки (оно регулярно броадкастится) с кодом и отправить его назад, указав свою команду. За каждое сообщение от команды-захватчика уровень захвата точки увеличивается на единицу, но если точка поймает сообщение от другой команды, то уровень захвата уменьшается на единицу до тех пор, пока она не станет снова нейтральной. Для каждого дрона есть кулдаун. Например, дрон отправил сообщение — новое точка примет только через несколько секунд. Однако дрон может вызвать подкрепление: если несколько дронов одной команды будут отсылать коды, то точка может быть захвачена быстрее. После достижения некоторого уровня захвата точка становится собственностью команды. Дрон может продолжить отправлять коды, чтобы увеличивать уровни сопротивления — прежде чем другая команда сможет разблокировать уровни захвата и перезахватить точку, она должна сначала довести уровни сопротивления до нуля. Как дроны узнают, что другая команда начала захват их точки? Если какой-то дрон разблокирует уровни захвата, сообщение об этом отправится всем дронам команды, у которой точка была в собственности. Однако до того сообщения не посылаются. Чтобы заранее узнать, что вражеский дрон начинает разрушать уровни сопротивления, нужно патрулировать территорию. Как будет защищаться территория арены от вмешательства игроков и дронов? Используем мод Conventional: оборачиваем арену в область, где нельзя кликать, и радуемся. Арену сделаем из дрононепробиваемых блоков — тех, что рукой разбить нельзя. Откуда дронам узнавать информацию о состоянии точки? Сообщение о характеристиках будет периодически (раз в 5 секунд, например) броадкаститься точкой на небольшой радиус. Таким образом, поймать его смогут только те дроны, что будут поблизости. Оно будет содержать: текущую принадлежность точки; код захвата уровни захвата и сопротивления. Обновления Так как бампать один и тот же пост на данном форуме — очень невесёлое занятие (да и никто толком не заметит изменение), в топике мы будем писать дополнения. Ниже нарисован список ссылок на обновления. Если вы собираетесь участвовать, обязательно прочитайте их в хронологическом порядке. 2017-10-23: Финализация правил. 2017-11-21: У нас всё медленно и печально. 2017-12-02: Движение началось. Посражаемся?
-
Очень даже логичная фича, как по мне.
-
Ни в планшеты, ни в дронов ред-карта не запихивается: ни первого, ни второго уровней. P. S. Хотя вру. При наличии модов на беспроводной редстоун, второго уровня карту можно запихать в планшет или дрона.
-
Не работает event.shouldInterrupt()
Fingercomp ответил в вопрос Laine_prikol в Разные (отсортировать)
Отложив то, что это банально неудобно (нет фильтров, например), в версиях новых OpenOS интеррапт обрабатывается в том числе и в computer.pullSignal (он переопределяется в /lib/event.lua). На ум приходит только pcall. -
Раздел "Программирование" для программ, а не для вопросов. Нужно было создать тему в форуме "Вопросник по Lua и модам OpenComputers и ComputerCraft" раздела "Общение". По поводу вопроса: невозможно. Дроны не могут быть с редстоун-картой (я посмотрел код). Только роботы, серверы и компы.
-
Не работает event.shouldInterrupt()
Fingercomp ответил в вопрос Laine_prikol в Разные (отсортировать)
Без переписывания либы ивентов это теперь невозможно. UPD. Однако pcall всё ещё может обрабатывать интеррапты любой севёрности. Только ошибок обычных не увидишь. -
Ну я буду в этом вопросе параноиком. Ещё проблема с этим в том, что на одного бота несколько юзеров: в любом канале, где он доступен, можно устроить флуд (и, вероятно, заблочить всего бота с апи).
-
Для этого сначала нужно запилить вебсокеты.
-
Отсылать сообщения на сторонний, закрытый сервер, а не в телеграм напрямую, — очень интересная затея. Как-то мне неприятно осознавать, что на стороне сервера-моста все сообщения могут логироваться. У телеграма же несложный API. Всё можно сделать на стороне луа. Я даже пробовал портировать какую-то луа-либу для телеграма под OC — протестить не смог, правда. До сих пор где-то на гисте валяется. Но там всё очень просто, просто функций в апи дофига. Код написан с каким-то странным стилем кодирования. Ну и лучше было это либой оформить, а не standalone программой.
-
Юзай либу unicode, чтобы отрезать от строки нужное количество юникод-символов. Если же хочешь из трёх байтов слепить строку назад, есть string.char.
