Перейти к содержимому

Поиск по сайту

Результаты поиска по тегам 'прога'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип публикаций


Блоги

  • Робот Байт
  • Fingercomp's Playground
  • 1Ridav' - блог
  • Totoro Cookies
  • Блог cyber01
  • IncluderWorld
  • KelLiN' - блог
  • Крутой блог
  • eutomatic blog
  • Programist135 Soft
  • Сайт в сети OpenNet
  • PieLand
  • Очумелые ручки
  • Блог недоблоггера
  • В мире Майнкрафт
  • LaineBlog
  • Квантовый блог
  • Блог qwertyMAN'а
  • some blog name
  • Дача Игоря
  • Путешествия Xytabich'а
  • Рецепты программирования

Форумы

  • Программирование
    • Программы
    • База знаний
    • Разработчикам
    • Вопросы
  • Игровой раздел
    • Игровые серверы
    • Моды и плагины
    • Жалобы
    • Ивенты и конкурсы
    • Файлы
  • Общение
    • Задать вопрос
    • Обратная связь
    • Беседка
    • Шкатулка
  • Технический раздел
    • Корзина

Группы продуктов

Нет результатов для отображения.


Искать результаты в...

Искать результаты, которые...


Дата создания

  • Начать

    Конец


Последнее обновление

  • Начать

    Конец


Фильтр по количеству...

Зарегистрирован

  • Начать

    Конец


Группа


AIM


MSN


Сайт


ICQ


Yahoo


Jabber


Skype


ВКонтакте


Gtalk


Facebook


Twitter


Город


Интересы

Найдено 1 результат

  1. Я, кажется, эдак годик (ну ладно-ладно, меньше) назад фигачил чатик и вроде был доволен (нет). Вот тута хранится сей артефакт: http://computercraft.ru/topic/758-chat-dlia-googolglasses/ Как выяснилось впоследствии, чатик был совершенно непродуман и неудобен. К тому же, я изрядно получше научился кодить на Луа. И вот, полностью задолбавшить старым чатиком, я засел писать новый. В этом топике представляю вниманию перевод README на гитхабе. Фичи: Каналы Поддержка беспроводной клавиатуры Модули Сетевой интерфейс Разделённые буферы вывода Конфиг-файл ... Требования: Карта данных или блок данных (OpenSecurity) — нужен для сетевого интерфейса. Соотвественно, мост и очки OpenPeripheral (TODO здесь должна быть картина, наныть у Тоторо). Использование Установка Вам нужны будут мост, очки, адаптер, а также карта или блок данных. Подсоедините адаптер к компьютеру (рядом поставить или кабелем соединить), поставьте мост рядом с адаптером. Вставьте карту данных в компьютер, если вы скрафтили её, или подключите блок данных. Теперь пропишите edit /etc/chat.json и отконфигурируйте по своему желанию. Предсказываю, что наверняка вам хотелось бы сменить список админов, например, чтобы потушить чат по-нормальному. Когда вы морально и физически готовы, пропишите opg-chat. Базовое использование Оденьте очки. Та-даам! Появится на мой взгляд довольно красивый интерфейсик. См. пикчу внизу. Чтобы что-то туды отправить, прямо в чат пишите сообщение, добавив $$ в начало. Чтобы отправить команду, сделайте то же самое, но со / перед сообщением. Кроме того, можно использовать беспроводную клавиатуру, тогда доллары не нужны. Некоторые команды, которые желательно знать stop — стопнуть прогу. Очевидно, только для админов доступно. join <канал> — подключиться к каналу. part [канал/номер вкладки] — покинуть канал. И да, главный канал покинуть нельзя. Приносим извинения. help [команда] — попросить помощи у сервера. Можно дать команду — даст подробную инфу о ней. page <строки> — скроллить историю сообщения на канале. Положительные значения двигают вверх, отрицательные — вниз.На клавиатуре можно просто тыкать [PgUp]/[PgDn]. Продвинутое использование Модули Если вас не устраивает стандартная поставка чата, можно дописать свои модули. Просто создайте файл с разрешением .module в директории /usr/lib/chat-modules и творите магию. Как образец можно использоваться стандартные модули. Окружение (доступные функции) storage — таблица, временная память для всякого. Может быть использована для общения между модулями. apcall(func, args...) — advanced pcall — вырезает всякую ненужную фигню типа номера строчки и пр., оставляя только причину. Использована для показа ошибки пользователям (так как там ошибки для простоты assert'ом гонятся). createChannel — внутренняя функция. addUser(user) — создать пользователя с данным именем. join — рекомендую не использовать функцию. joinN(chan, user) — затаскивает пользователя на канал. Отсылает всякие оповещения, делает события и создаёт канал, если не существует. part — внутрення функция. partN(chan, user[, partMsg]) — заставляет пользователя выйти с канала с опциональной причиной. quitN(user[, quitMsg]) — заставляет его же покинуть вообще все каналы. sendMsgChan(chan, user, msg[, recipients]) — отослать сообщение на канал от имени пользователя. Можно дать таблицу тех, кому будет видно сообщение. sendMsgChanN(chan, user, msg) — то же самое, в принципе, но сделать дополнительные проверки (модерируемый ли канал там, достаточно ли прав). Не всегда полезно может быть — потому используйте функцию выше, если никаких проверок правовых не надо. addObject(surface, objName, funcKey, args...) — рекомендуемый способ для рисования объектов на поверхности (surface). Первым нужно дать таблицу из surfaces, потом задать имя объекту, указать название функции (строкой!) и дать аргументы функции. Нужно, чтобы можно было обратиться к объекту позже. Кроме того, хранит в userdata объекта его имя — если захочется использовать поддержку мыши без напряга. getActiveChannel(user) — вернуть "активный" канал. Т. е. у пользователя открыт возвращаемый канал (вкладка). bridge — прокси моста. surfaces — таблица, содержащая поверхности пользователей. surfaces[user] = { surface = {...}, -- Сама поверхность objects = {...} -- объекты на поверхности, созданные функцией `addObject` } users — список пользователей, созданных функцией addUser. commands — список зарегистрированных команд. isin(tbl, value) — маленькая, но очень полезная функция, которая кочует из одной моей проги в другую. Проходится по таблице и ищет указанное значение. Возвращает true, первый найденный ключ таблицы при успехе и false при неудаче. cfg — таблица с конфигурацией. В неё можно записывать — конфиг сохраняется каждую минуту и при выходе. setMode(chan, user, mode[, arg]) — выставить mode. mode — это параметр типа ±<буква mode>, например, +o, -h. Почти как в IRC. modes — таблица всех доступных modes. getLevel(chan, user) — возвращает маску уровня доступа пользователя. checkLevel(chan, user, levels, any) — проверяет, достаточно ли прав у пользователя. levels — таблица, содержащая уровни ({OP, ADMIN, SERVER}). Если any == true, то пользователя достаточно иметь один из перечисленных уровней для успеха. Иначе, все. reqcom(componentName, required[, msg]) — возвращает прокси компонента. Если его нет, а required ~= true, то вернуть пустой компонент (при его индексации возвращает всегда function() end), если же required == true, то создаст ошибку. Напишет ещё сообщение msg, если дано, а компонента нет. copy(tbl) — тоже очень полезная небольшая рекурсивная функция. Копирует таблицу. Напомню, что в Луа при передачи таблицы в функцию, та не копируется, а даётся той же самой (ну как & в Си-языках), что иногда чрезвычайно полезно, не иногда совсем не нужно. _FILE — строка с именем файла модуля. _MODULE — строка с названием модуля (ну то есть то же имя файла его, но без разрешения) NORMAL, VOICE, HALFOP, OP, ADMIN, SERVER — уровни доступа. PREFIXES — таблица уровень-префикс для вывода на очки. всякие там @, %. addListener(eventName, name, func) — добавить слушатель с данным именем, работающий как event.listen, но игнорирующийся при завершении программы. delListener(eventName, name) — удалить слушатель. command {args} — создать новую команду. Лично я опускаю скобки, так как не люблю их. args = { name = "название команды, которую надо писать через /", level = NORMAL, -- кому позволено писать команду help = "Краткое описание команды в списке /help", doc = [[Длинная документация для команды, можно на несколько строк делать]], func = function(eventName, chan, user, raw, cmd, args...) -- eventName — название события -- chan — канал, откуда отправлено событие -- user — пользователь, запустивший команду -- raw — необработанная команда без / в начале -- cmd — название команды -- args... — аргументы, разделённые пробелом (пробелами) end } Сетевой интерфейс (network.module) Этот модуль позволяет вам создавать своих чат-ботов через сеть. Поддерживает оба типа модемов. Однако, советую знать о Spoofing Card из Computronics — она позволяет указывать адрес отправителя (не только проводная сеть, но и беспроводная). Конфигурация В конфиг-файле (/etc/chat.json) есть секция "net". Пример: "net": { "enabled": true, "modemStrength": 400, "ports": { "6667": true, "6666": ["519187"] } } "enabled" задаёт, загружать ли модуль вообще. Если модем беспроводной, его сила будет установлена в значение параметра "modemStrength". "ports" — список портов, которые программа будет слушать. Левая часть ("6667"), очевидно, порт. Правая часть можно быть или true — тогда программа не будет фильтровать порт, или белый список адресов (или их частей). В моём примере, программа будет принимать соединения на порту 6667 только от адресов, которые начинаются на "519187". Команды <имя пользователя>, "auth", <пароль> — подключиться к серверу. true, "keep", "auth", <сессия> — <сессия> — это временный пароль, требуемый для других команд. <имя пользователя>, "msg", <сессия>, <сообщение> — отправить сообщение или команду на сервер. true, "keep", "ok" — сообщение успешно отправлено. <имя пользователя>, "quit", <сессия>[, причина] — закрыть соединение. true, "close" — успешно закрыто. <имя пользователя>, "chaninfo", <сессия>, <канал> — получить инфу о канале. false, "keep", "you are not on channel" — не на канале. true, "keep", <data> — <data> — это сериализованная таблица со всей информацией. <имя пользователя>, "userinfo", <сессия>, <пользователь> — получить инфу о пользователе. false, "keep", "no such user" — запрошена инфа о несуществующем пользователе. true, "keep", <data> — <data> — это вериализованная таблица, соедржащая инфу о пользователе. Ошибки false, "error", "there is already an open connection for this address" — соединение для данного адреса уже установлено. false, "error", "nickname is already in use" — данное имя пользователя уже используется. false, "error", "no password given" — не дан пароль. false, "error", "could not auth: <причина>" — не смог авторизоваться, неизвестная причина. false, "error", "wrong auth" — нет соединения для авдреса, не тот пользователь или неверная сессия. false, "error", "no message given" — не дано сообщение (3 аргумент). События "event", "chat", <канал>, <пользователь>, <сообщение>, <все>, <получатели> — это собтие создаётся, когда пользователь пишет сообщение на канале. Здесь и ниже, <all> — это булева переменная, которая равна true[/i], когда отдельных получателей не задано (всем на канале отослано), и [il]false в противном случае. Если <all> == true, то <recipients> — сериализованная таблица получателей, иначе — сериализованная строка "all". "event", "notice", <канал>, <типУведомления>, <строкаУведомления>, <получатели> — событие создаётся при уведомлениях. "event", "pm", <пользователь>, <получатель>, <сообщение> — событие создаётся при отправке ЛС. "event", "join", <канал>, <пользователь> — пользователь вошёл на канал. "event", "part", <канал>, <пользователь>, <причина> — пользователь покинул канал. "event", "quit", <пользователь>, <причина> — пользователь вышел с сервера. false, "close", "server is stopping" — сервер завершает работу, соединение закрыто. Пароли Как вы могли заметить, нужен пароль для подключения. Где его взять? Если для пользователя нет пароля (или это имя не было использовано), следует отправлять "" в качестве пароля. Если же он есть, его и нужно отправлять в аргументе. Для установки пароля используйте команду /pass [пароль]. Если аргумент опустить, он будет снят с имени. Пароли хранятся в виде MD5-хешей. Для небольшой программки сойдёт, думаю, и этого. Сессии После небольшого раздумья ко мне пришло решение проблемы со Spoofing card из Computronics. Было решено усложнить жизнь ботам и клиентам, добавив сессию — временный пароль длиной в 16 символов, который даётся при авторизации. Он требуется для большинства других команд. Фуух. А теперь о том, как скачивать. Всё очень просто: устанавливаем OPPM (OpenPrograms Package Manager) и пишем oppm install opg-chat. Вуаля. Кроме того, программа требует OpenOS 1.6 и Lua 5.3. Исходники доступны тут: https://github.com/OpenPrograms/Fingercomp-Programs/tree/master/opg-chat Ах, да, собственно, пикчи этого безобразия:
×
×
  • Создать...