Перейти к публикации
Форум - ComputerCraft
Fingercomp

FIngerChat — НЕпростой чат для GoogolGlasses

Рекомендованные сообщения

FingerChat — моя программка, смысл которой понятен из названия: чат. Но чат не простой — это чат для GoogolGlass... с сетевым интерфейсом: принимает сообщения на определённых портах, отсылает их же туда же.

Кроме того, в чате, на текущий момент:

  • Поддержка команд. Я постарался сделать удобным написание собственных команд: Вам не требуется изменять код основной части, только добавить поля в таблицу: приём, обработку сообщений и передачу аргументов выполняет программа сама. Сейчас доступны команды (в скобках --- уровень доступа по умолчанию):
    • /help — справка по командам (1),
    • /list — список игроков, подключённых к очкам (1),
    • /setgroup — добавить игрока в определённую группу (о них — ниже) до отключения чат-сервера (точнее, до очистки памяти). Перманентно игроков можно ставить в группу в коде программы (4),
    • /mute — замутить игрока. Как и команда выше, временно (3),
    • /unmute — размутить игрока, тоже временно (3),
    • /broadcast — объявление. Пишется капсом и с префиксом [!B!] (3).
    • /stop — "мягкая" остановка чат-сервера (4).
    • /clear — очистка чата (3).
    • /me — сказать что-то от третьего лица (2).
    • /getinfo — если вы далеко от сервера, а насчёт работающего энергоснабжения сомневаетесь. Выводит память и энергию (4).
    • /ping — играем в классический ПИНГ-понг с сервером. Если сервак отказывается работать нормально. Или если чат-сервер упал (1).
  • Распределение игроков по группам. У каждой группы свой префикс, суффикс и уровень доступа. Уровень доступа нужно указывать при написании команд. Группы (уровень доступа в скобках):
    • admin (4)
    • moder (3)
    • prog (2)
    • default (1)
  • Сетевой интерфейс — взаимодействие с модемом. Принимает сообщения типа nick, msg или "!nick:msg" на определённых портах. При обновлении чата отсылается строка формата "[time] sender: msg". Есть возможность делать одни порты по вайт-листу, другие — открыть для всех. Полезно при написании ботов для чата (они тоже могут писать команды). Всем сетевым пользователям устанавливается префикс "[NET]"
  • Лог сообщений. Хранится в /var/log/chatserver_DATE.log.
  • MOTD. Сообщение, хранящееся в /etc/chatserver.motd, которое показывается при старте сервера.
  • Из интерфейсовых штук:
    • Есть возможность указать время жизни сообщений. Тогда каждую указанную итерацию первое сообщение будет удаляться, если всего написано сообщений больше половины.
    • Скроллинг чата при достижении макс. кол-ва сообщений.
    • Бокс статичен, но с градиентом от 0.6 чёрного цвета до 0.0 вправо.
    • Можно указать макс. кол-во символов сообщения.

На сервере доступен основной чат-сервер, который расположен у меня дома (в привате Тоторо у самого спауна).

Для подключения Вы:

  1. Можете попросить меня дать Вам порт для общения.
  2. Можете попросить меня внести в белый список на фильтрованный порт.
  3. Можете прилинковать Ваши GoogolGlasses (терминальные очки из OpenPeripheral) к мосту по координатам 1476, 1876.

ВАЖНО! Все сообщения проверяются СекирБашкой! При флуде, мате и прочих нежелательных вещах Вы будете зарабатывать штрафные баллы! Тем не менее, от прерывания отправки СекирБашка не защитит: в любом случае Ваше сообщение дойдёт до чат-сервера.

 

Скриншот программы:

D23AkQk.png

 

P. S. Так как при включении генмата вырубается сервак (и 12 капаситоров ему не помогают, а вечный источник энергии мне никто не даст по понятным причинам), прикрутил ботик, который будет к тому же демонстрировать функционал программы. При включении/выключении генмата, при низком и очень низком уровне энергии в чат будет писаться сообщение от FingerChat Energy Server. Продемонстрировать не могу — забыл заскриншотить.

P. P. S. Код программы: http://pastebin.com/ji9e8MXD. Если что-то можно изменить в коде для более эффективной работы, обязательно пишите тут или в чате на сервере!

P. P. P. S. А ещё я хочу медалек, да побольше, да за всё!

Изменено пользователем Fingercomp
  • Like 7

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

JXmNltW.png

 

Ура-ура-ура, наконец то кто то делает сложную, многофункциональную программу, заточенную под удобство пользователей. Как я.

 

Где я могу получить бесплатные очки и стать крутым пользователем твоего чата?

Давай я построю маленькую будку напротив банка где будут раздавать очки автоматически?

Изменено пользователем Krutoy

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Постить не буду, ибо я пишу посты со скоростью загрузки бубна.

:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ура-ура-ура, наконец то кто то делает сложную, многофункциональную программу, заточенную под удобство пользователей. Как я.

 

Где я могу получить бесплатные очки и стать крутым пользователем твоего чата?

Давай я построю маленькую будку напротив банка где будут раздавать очки автоматически?

Очки Алекс обещал в /kit glasses (;)), ждём.

Подключаемся через мост на 1476, 1876. Координаты вроде легко запомнить :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Решил я, что пора выкладывать программку.

Теперь Вы сможете запустить свой собственный чат-сервер!

ПАСТБИН ПРОГРАММЫ В ОП!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Очки Алекс обещал в /kit glasses ( ;)), ждём.

 

А, точно, ща добавлю, завтыкал.

Отличный чатик! Хорошая программа! 

 

П.С. Кстати на заметку игрокам. Админ блоком типа "АМИ" экранированный чат  $$ бла-бла перехватывается, но..... у нас нет АМИ=)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Кхм.

Что кхм? Это детская какашка. Ним только в чате в радиусе 15 блоков (в админском "больше" B-) ) флудить в цикле. Что думаешь, я его не видел :D

 

Ивент только на чат_мессагу.

Он не поддерживает экранировку и сам не видит экранированных сообщений. АМИ видит все экранированные сообщения, и моара и очков.

 

Посмотри сколько ивентов и функций у чатбокса из Моарпериферала и экранировка есть.

А вот админский монстр АМИ.  Чатбокс из КТ, это младенец в памперсе, по сравнению с АМИ, но чтобы были иммибисы, нужен КК.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как я понял, читать чат нужно при помощи специально прилинкованых очков, а вот как писать не пойму. Через общеигровой чат? Или путем отправки wifi-сообщения, но тогда как оно определяет кто отправитель?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как я понял, читать чат нужно при помощи специально прилинкованых очков, а вот как писать не пойму. Через общеигровой чат? Или путем отправки wifi-сообщения, но тогда как оно определяет кто отправитель?

Итак, подробнее об использовании.

Начнём с очков. Просто подходим к мосту, тыкаем очками по нему и одеваем. Если всё пройдёт успешно, то появится боксик, в который можно отправлять сообщения так: $$ сообщение. Писать это нужно в игровой чат, игрокам без прилинкованных к серверу очков это не будет видно всё равно. Кстати, в ивенте есть и имя отправителя, и uuid, и само сообщение.

Дальше, чуть сложнее будет с сетевым интерфейсом. Здесь ник нужно указывать вручную. Но где и как?

Всё просто, как никогда.

 

Способ №1.

modem.broadcast(PORT, вашник, сообщение)

modem.broadcast(12345, "Фингер", "Привет, мир!")

 

Способ №2.

modem.broadcast(PORT, "!вашник:сообщение")

modem.broadcast(PORT, "!Фингер:Привет, мир!")

 

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

 

P. S. Обращаю внимание, что главный чат-сервер может отрубаться, когда я буду оффлайн: может кончиться энергия, генмат быть оставленным включённым и т. д. Стабильной работы не будет до тех пор, пока чанк не будет постоянно загружен и будет отсутствовать полностью бесперебойная, не зависящая от других факторов, подача энергии. Вот такие дела.

Изменено пользователем Fingercomp

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

Способ №1.

modem.broadcast(PORT, вашник, сообщение)

modem.broadcast(12345, "Фингер", "Привет, мир!")

 

Способ №2.

modem.broadcast(PORT, "!вашник:сообщение")

modem.broadcast(PORT, "!Фингер:Привет, мир!")

 

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

А что мне помешает отправлять сообщения от имени администратора?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А что мне помешает отправлять сообщения от имени администратора?

То, что для сетевых сообщений к нику прикрепляется префикс "[NET]". То есть если кто-то будет писать "Fingercomp", "привет всем", выведется что-то типа такого: [время] [NET]Fingercomp: привет всем. Зарезервированные имена я не делал пока что, так как открытие портов не по фильтру лежит целиком и полностью на совести владельца такого чат-сервера :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сетевой способ зря прикрутили. Зафлудят в цикле. И в коде не продумана защита.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сетевой способ зря прикрутили. Зафлудят в цикле. И в коде не продумана защита.

Я ж говорю, если владелец открывает порт для всех — его проблемы. Но отключение прого-реагирования на модем-сообщения сделаю, так как это выполняется элементарно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×