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

Простой чат для Terminal Glasses

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

Вот простенькая малюсенькая программулька для чата. Простая как лопата, но работает стабильно и надежно. Бокс расширяется и сужается  по высоте в зависимости от количества сообщений. Жизнь сообщения 15 секунд. Если сообщений нет, долгое время, они потихоньку все очистятся и пропадут с экрана вообще. Длина строки ограничена 140 символов.

 

Нет никаких банов, управления чатом, админов и префиксов, прав и очистки чата. Это самая простая реализация, какая может только быть. Уже с друзьями можете уединится в этом чатике и общаться.

 

Подключите блок моста через адаптер к ПК, запустите программу, кликните ПКМ по мосту, наденьте очки и пишите собщения в чат игровой в виде $$ Привет, Петя.

 

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

 

 0daR0E7.png

 

 

 

 

local com = require('component')
local computer = require('computer')
local event = require('event')
local fs = require("filesystem")
local term = require('term')
local serial = require('serialization')
local com = require('component')
local gl = com.openperipheral_bridge
local max_len = 140

local  function chatDraw()
	gl.clear()
	gl.addBox(1,1,400,#chat_buffer*10,0x000000,0.5)
	for i=1, #chat_buffer do
		gl.addText(3,10*i-8,chat_buffer[i], 0xFFF700)
	end
	gl.sync()
end
term.clear()
chat_buffer = {}
gl.clear()
gl.sync()
  while true do
  	e,adr,nick,uuid,msg = event.pull(15, "chat_command")
	 if e == nil then
	 	if #chat_buffer~=0 then
		 	table.remove(chat_buffer,1) 
			chatDraw()
		end	
	 else


	 	print(nick..': '..msg)
	 	if #msg > max_len then
	 		msg = string.sub(msg,1,max_len)..'..'
	 	end
	  	table.insert(chat_buffer,nick..': '..msg)
		if #chat_buffer > 7 then
			table.remove(chat_buffer,1)
		end
		chatDraw()
	end
  end 

 

 

 

 

 

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

  • Like 5

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


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

Можно вопрос, а каковы функции метода .sync()?

Синхронизация, обновление — называйте, как хотите. У всех подключённых клиентов обновляются очки. Зачем? С 1.7 при изменениях виртуального экрана (добавление/изменение/удаление объектов) инфа сохранится в мосте... Но не отправится на очки! Для отправки и нужен метод glasses.sync().

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


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

Синхронизация, обновление — называйте, как хотите. У всех подключённых клиентов обновляются очки. Зачем? С 1.7 при изменениях виртуального экрана (добавление/изменение/удаление объектов) инфа сохранится в мосте... Но не отправится на очки! Для отправки и нужен место glasses.sync()

А при .clear() очищаются очки или мост?

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


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

А при .clear() очищаются очки или мост?

Все объекты на мосте. Нужно опять вызывать glasses.sync() для синхронизации.

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


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

Все объекты на мосте. Нужно опять вызывать glasses.sync() для синхронизации.

Спасибо огромное, помог[emoji106]

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


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

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

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

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

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

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

Войти

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

Войти сейчас

×